- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我是编程初学者,我在完成编程课的作业时遇到了麻烦。作业是使用两个可以对分数执行算术的类创建一个 Java 程序。我认为我的主要问题是我需要在这个项目中使用的面向对象的概念,例如类和对象。我仍然对构造函数、访问器、修改器等如何工作感到非常困惑。
第一个类 Fraction.java 包含所有算术运算的方法定义以及查找最大公约数、减少分数和打印结果的方法。我已经创建了 printFraction、reduceFraction、gcd 和 addFraction 方法,但我还没有尝试减法、乘法或除法。
第二个类 TestFraction.java 旨在实现 Fraction 类并测试其功能。我在这个类中编写了一些代码来测试 Fraction 类,同时我仍在工作,并且我拥有的方法(print、reduce 和 gcd)似乎除了 addFraction 方法之外也可以工作。看起来它打印了一个内存地址或其他东西,而不是我正在寻找的分数。我知道原因,但不知道如何解决。
这是到目前为止我的代码。就像我说的,我是一个初学者,我确信它不是很好,但我最担心的是完成并让程序运行。如果您有任何建议,请尽量让我容易理解。以下是示例输出:sample output
分数.java:
public class Fraction {
private int numerator;
private int denominator;
//no-arg constructor
Fraction() {
numerator = 0;
denominator = 1;
}
//constructor
Fraction(int numerator, int denominator) {
this.numerator = numerator;
this.denominator = denominator;
}
//accessor for numerator
int getNumerator() {
return numerator;
}
//mutator for numerator
void setNumerator(int num) {
numerator = num;
}
//accessor for denominator
int getDenominator() {
return denominator;
}
//mutator for denominator
void setDenominator(int denom) {
denominator = denom;
}
//printFraction method concatenates the numerator and denominator with a "/" string between them
static void printFraction(int numerator, int denominator) {
System.out.print(numerator + "/" + denominator);
}
//reduceFraction method uses the gcd method to print a reduced version of the fraction given
public static void reduceFraction(int numerator, int denominator) {
int smaller;
if (numerator < denominator) {
smaller = numerator;
}
else {
smaller = denominator;
}
for (int i = smaller; i > 0; --i) {
if (numerator % i == 0 && denominator % i == 0) {
System.out.print("Reduced form: " + (numerator/gcd(numerator, denominator)) + "/" + (denominator/gcd(numerator, denominator)));
break;
}
}
}
//recursive method that calls itself until it reduces completely to the gcd
public static int gcd(int numerator, int denominator) {
if (numerator % denominator == 0) {
return denominator;
}
return gcd(denominator, numerator % denominator);
}
public static Fraction addFraction(Fraction a, Fraction b) {
return new Fraction((a.numerator * b.denominator + a.denominator * b.numerator), (a.denominator * b.denominator));
}
TestFraction.java(非常不完整,目前仅包含基本测试):
import java.util.Scanner;
public class TestFraction {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter the first fraction's numerator and denominator separated by spaces: ");
Fraction myFraction1 = new Fraction(input.nextInt(), input.nextInt());
System.out.print("Enter the second fraction's numerator and denominator separated by spaces: ");
Fraction myFraction2 = new Fraction(input.nextInt(), input.nextInt());
Fraction.printFraction(myFraction1.getNumerator(), myFraction1.getDenominator());
System.out.println();
Fraction.printFraction(myFraction2.getNumerator(), myFraction2.getDenominator());
System.out.println();
System.out.print(Fraction.gcd(myFraction1.getNumerator(), myFraction1.getDenominator()));
System.out.println();
System.out.print(Fraction.gcd(myFraction2.getNumerator(), myFraction2.getDenominator()));
System.out.println();
Fraction.reduceFraction(myFraction1.getNumerator(), myFraction1.getDenominator());
System.out.println();
System.out.println(Fraction.addFraction(myFraction1, myFraction2));
}
}
最佳答案
以下是一些建议:
Number
一致。 Java api 中的类 - 它们都不允许您在构造后更改值。Fraction.UNIT
和Fraction.ZERO
常量equals
(和 hashCode
)方法 - 你想要 new Fraction(1, 1).equals(new Fraction(1, 1))
返回true
目前它将返回 false
reduce
Fraction
中的方法。没有理由将其设为公共(public)静态negate
仅切换分子符号的方法inverse
仅切换分母和分子的方法substract
可以只是 negate
的组合和add
和divide
可以是 inverse
的组合和multiply
toString
转换为 String
最后的建议是学习使用 junit 和(IMO)assertj 并编写自定义断言以及在测试类中创建新分数的方法。然后你最终会得到更自然的测试用例,例如:
assertThat(fraction(2, 4)).isEqualTo(fraction(1, 2));
assertThat(fraction(1, 7).negate()).isEqualTo(fraction(-1, 7));
assertThat(fraction(4, 16)).hasNumerator(1).hasDenominator(4);
assertThatExceptionOfType(ArithmeticException.class)
.isThrownBy(() -> fraction(1, 0));
这将使失败的测试更容易理解错误消息。
理想情况下,您应该进行许多此类测试,以表明您的算法可以在需要处理的所有奇怪的边缘情况下正常工作。
关于使用两个类对分数进行算术运算的 Java 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60217009/
直接从 Python 代码运行 pylint 时,我似乎无法获得任何返回值。从命令行运行它会生成一个漂亮的报告,在底部有一个总结分数。 我已经尝试将“Run”的返回值放入一个变量中,并获取它的“rep
我是 Python 新手,正在尝试学习单词检测。我有一个带有单词的数据框 sharina['transcript'] Out[25]: 0 thank you for calling my
http://jsfiddle.net/q8P7Y/ 我在最后显示最终分数时遇到问题,有很多方法可以做到这一点,但我不确定什么是最好的。 正如你所看到的,下一个按钮只是 div 的显示/隐藏,而不是页
我使用滑动 slider 并有计数器分数。它计数很好,但我需要计数 =(所有幻灯片 - 1)。例如,如果我有 20 张幻灯片,我想显示总数 19。有什么办法可以做到这一点吗?我使用他们网站上的常规 j
我使用滑动 slider 并有计数器分数。它计数很好,但我需要计数 =(所有幻灯片 - 1)。例如,如果我有 20 张幻灯片,我想显示总数 19。有什么办法可以做到这一点吗?我使用他们网站上的常规 j
我试图在按下按钮时添加分数,分数显示在 JTextField 中,但是当按下按钮时,分数会添加,它显示为 0。我有一个存储分数的整数字段 private int score=0; yesButton
我可以在选项(单选按钮)随机播放之前计算分数/分数,如下面的代码所示。在Collection.shuffle()之前,选项是固定的,因为 CorrectChoice将始终分配给c2单选按钮。那么我可以
我在这里的代码只能得到87%的代码,因为“带有非正参数的加法参数什么也没做。我该如何解决呢?我尝试了更多的方法,但是我什至无法解决此错误在同学的帮助下 说明是: 对于此分配,您将创建一个存储分数的类。
昨天,我尝试以一种方式执行此操作...今天我尝试另一种方式,但仍然卡住了。我必须找到一种使用整数除法和取模来做到这一点的方法。这是我的代码,后面是错误消息。 public int evaluateFr
我这里有一些特殊字符: http://209.141.56.244/test/char.php 但是当我在这里通过 ajax 抓取这个文件时,它们显示为 back ?标记: http://209.14
我得到了一张图表 G与 n顶点,标记自 1至 n (2 a_1 -> a_2 -> ... a_k -> n A然后将占据 1 的所有“子节点”节点, a_1 , ... a_x (其中 x = ce
我有一个看起来像这样的 mongodb 集合: db.scores.insert({"name": "Bob", value: 96.3, timeStamp:'2010-9-27 9:32:00'}
我试图更好地了解 lucene 如何对我的搜索进行评分,以便我可以对我的搜索配置或文档内容进行必要的调整。 以下是分数明细的一部分。 产品: 0.34472802 = queryWeight,
在我网站上用户生成的帖子下,我有一个类似亚马逊的评级系统: Was this review helpful to you: Yes | No 如果有投票,我会在该行上方显示结果,如下所示:
对于我的项目,我需要找出哪些搜索结果被视为“良好”匹配。目前,分数因查询而异,因此需要以某种方式对它们进行标准化。标准化分数将允许选择高于给定阈值的结果。 我为 Lucene 找到了几个解决方案: h
我有一个由 57 个变量组成的数据文件。由于测量水平不均匀,我想将其中的大约 12 个转换为 z 分数。我查找了互联网资源和帮助文件。一个互联网资源建议我需要 Rbasic 包(不存在)。我使用了 s
我对 SOLR 核心运行查询并使用过滤器限制结果例如 fq: {!frange l=0.7 }query($q)。我知道 SOLR 分数不有绝对意义,但是0.7(只是一个例子)是计算出来的基于用户输入
我想找到不同的方法来解决我遇到的现实生活问题:想象一下进行一场比赛或一场游戏,在此期间用户收集积分。您必须构建一个查询来显示具有最佳“n”分数的用户列表。 我举一个例子来澄清。假设这是用户表,其中包含
我有很多 wiki 页面,我想训练一个分类器,看看是否可以通过一些特征(包括段落的位置和段落的 lucene 分数)来确定重点搜索的位置。我尝试将每个段落视为一个文档,这使我能够获得每个段落的 luc
我是 R 编程新手,在使用一些基本代码时遇到问题。 我有一个包含以下列的数据框:条件(因子)、用户(因子)和灵敏度(int)。对于每个用户有 20 个敏感项。我需要为每个用户创建一个具有标准化敏感度分
我是一名优秀的程序员,十分优秀!