如果我要编写一个新程序并想拥有一个分数类,而我的书称之为驱动程序类,那是一个主类,而我有这样的代码
// Driver class
import java.util.Scanner;
public class DriverClass{
public static void main(String[] args){
Scanner stdIn = new Scanner(System.in);
Fraction c, d;
System.out.println(" Enter a numerator then a denominator:");
c = new Fraction( stdIn.nextInt(), stdIn.nextInt());
c.print();
System.out.println(" Enter a numerator then a denominator:");
d = new Fraction( stdIn.nextInt(), stdIn.nextInt());
d.print();
}
}
...
在我的分数班级中,我有一种称为公共分数的方法。如何设置来自扫描仪util的驱动程序类中来自分数c的两个数字,这又将如何将c值替换为来自分数d的值?我正在上Java类,这是我不了解的家庭作业的一部分。我试图将这些值传递给分数类,因为最后我必须将这两个分数相加并相乘。
// begining of class
public class Fraction{
private int numerator;
private int denominator;
// well this is what my problem is, how do I call for c
// twice in the Fraction class
public int Fraction(int num, int denom){
this.numerator = num;
this.denominator = denom;
}
// is this the right way to recieve the fraction
// from the driver class for both c and d?
}
有人可以帮我吗
最佳答案
您的Fraction
方法是一种定义为返回int的方法,但是您正在调用它,就好像它是构造函数一样。
构造函数不返回任何内容,因此请勿声明任何返回类型。 (它们甚至都没有void
类型,因此编译器知道它们是构造函数而不是方法,需要用new
调用。这是一个小错误,Java允许您声明与类同名的方法,IIRC就是Java Puzzlers中的难题之一)。
从定义中删除“ int
”返回类型:
public class Fraction{
private int numerator;
private int denominator;
public Fraction(int num, int denom) {
//...
如何设置来自扫描仪util的驱动程序类中来自分数c的两个数字,这又将如何将c值替换为来自分数d的值?
您要打两个
new Fraction(..,..)
。每次使用new
时,它都会创建所请求类的新对象,然后使用您提供的值调用该对象上的构造函数。因此,c
和d
将保存对Fraction
的不同实例的引用。由于numerator
的denominator
和Fraction
字段未标记为static
,因此Fraction
的每个实例将具有这些字段的自己的副本,因此将值传递给其引用的对象的构造函数将存储在变量c
中的变量存储在第一个新对象中,将d
的变量存储在第二个新对象中。由于它们是不同的对象,因此这些值不会相互替换。关于java - 将值传递给Java中的分数类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1513374/