首先,我的主程序正在调用Fraction.java,为了这个提交,请假设“Fraction1”的所有实例实际上都是“分数”
import java.util.Scanner;
public class JursekGregWeek7
{
public static void main(String[] args)
{
Scanner stdIn = new Scanner(System.in);
Fraction1 c, d, x; // Fraction objects
System.out.println("Enter numerator; then denominator.");
c = new Fraction1(stdIn.nextInt(), stdIn.nextInt());
c.printIt();
System.out.println("Enter numerator; then denominator.");
d = new Fraction1(stdIn.nextInt(), stdIn.nextInt());
d.printIt();
x = new Fraction1(); // create a fraction for number 0
System.out.println("Sum:");
x.add(c).add(d);
x.printIt();
x.printAsDouble();
x = new Fraction1(1, 1); // create a fraction for number 1
System.out.println("Product:");
x.multiply(c).multiply(d);
x.printIt();
x.printAsDouble();
System.out.println("Enter numerator; then denominator.");
x = new Fraction1(stdIn.nextInt(), stdIn.nextInt());
x.printAsDouble();
} // end main
}
以下是Fraction.java,添加了println以确定值是否在给定点。
public class Fraction
{
private int numerator;
private int denominator;
public Fraction()
{
this.numerator = 1;
this.denominator = 1;
}
public Fraction(int n, int r)
{
this.numerator = n;
this.denominator = r;
}
public Fraction add(Fraction f)
{
System.out.println(this.numerator + "banana");
System.out.println(this.numerator + "asdfasdf");
this.numerator = this.numerator * f.denominator + f.numerator * this.denominator;
this.denominator = this.denominator * f.denominator;
System.out.println(this.numerator + "this.numerator");
System.out.println(this.denominator + "this.denominator");
System.out.println(f.numerator + "f.numerator");
System.out.println(f.denominator + "f.denominator");
return this;
}
public Fraction multiply(Fraction f)
{
this.numerator = this.numerator * f.numerator;
this.denominator = this.denominator * f.denominator;
return this;
}
public void printIt()
{
System.out.println(this.numerator + "/" + this.denominator);
}
public void printAsDouble()
{
double d;
d = (1.0 * this.numerator / this.denominator);
System.out.println(d);
}
}
问题似乎围绕公共Fraction(),公共分数(int n,int r)和公共分数加(分数f)
非常感谢任何建议/帮助。
答案 0 :(得分:0)
1)你搞砸了。
this.numerator = this.numerator * f.denominator + f.numerator * this.denominator;
this.denominator = this.denominator * f.denominator;
使用一些临时局部变量(参见下面的代码)。
2) 这也不是零,因为你的评论说:)
public Fraction()
{
this.numerator = 1;
this.denominator = 1;
}
所以这些是唯一需要的两个小修补程序。
以下是您修复的代码,但请多考虑一下 (即想想为什么这些修正使其有效)。
public class Fraction
{
private int numerator;
private int denominator;
public Fraction()
{
this.numerator = 0;
this.denominator = 1;
}
public Fraction(int n, int r)
{
this.numerator = n;
this.denominator = r;
}
public Fraction add(Fraction f)
{
// System.out.println(this.numerator);
// System.out.println(this.numerator);
int n = this.numerator;
int d = this.denominator;
this.numerator = n * f.denominator + f.numerator * d;
this.denominator = d * f.denominator;
// System.out.println(this.numerator + " : this.numerator");
// System.out.println(this.denominator + " : this.denominator");
// System.out.println(f.numerator + " : f.numerator");
// System.out.println(f.denominator + " : f.denominator");
return this;
}
public Fraction multiply(Fraction f)
{
this.numerator = this.numerator * f.numerator;
this.denominator = this.denominator * f.denominator;
return this;
}
public void printIt()
{
System.out.println(this.numerator + "/" + this.denominator);
}
public void printAsDouble()
{
double d;
d = (1.0 * this.numerator / this.denominator);
System.out.println(d);
}
}
TEST:
Enter numerator; then denominator.
1
5
1/5
Enter numerator; then denominator.
1
6
1/6
Sum:
11/30
0.36666666666666664
Product:
1/30
0.03333333333333333
Enter numerator; then denominator.
4
12
0.3333333333333333
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8