如果我要编写一个新程序并想拥有一个分数类,而我的书称之为驱动程序类,那是一个主类,而我有这样的代码

// 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时,它都会创建所请求类的新对象,然后使用您提供的值调用该对象上的构造函数。因此,cd将保存对Fraction的不同实例的引用。由于numeratordenominatorFraction字段未标记为static,因此Fraction的每个实例将具有这些字段的自己的副本,因此将值传递给其引用的对象的构造函数将存储在变量c中的变量存储在第一个新对象中,将d的变量存储在第二个新对象中。由于它们是不同的对象,因此这些值不会相互替换。

关于java - 将值传递给Java中的分数类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1513374/

10-14 09:43