Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中将值传递给分数类_Java_Fractions - Fatal编程技术网

在java中将值传递给分数类

在java中将值传递给分数类,java,fractions,Java,Fractions,如果我要做一个新程序,想要一个分数类,我的书称之为驱动程序类,它是一个主类,我有这样的代码 // 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.o

如果我要做一个新程序,想要一个分数类,我的书称之为驱动程序类,它是一个主类,我有这样的代码

// 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();
    }
}
...
在我的分数类中,我有一个叫做公共分数的方法。这将如何设置驱动程序类中的分数c中的两个数字,该类中的分数c是从扫描器util中输入的,同时,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?

}

你的
分数
方法是一个定义为返回int的方法,但是你调用它就像调用构造函数一样


构造函数不返回任何内容,因此不要声明任何返回类型。(它们甚至没有
void
类型,因此编译器知道它们是构造函数而不是方法,需要使用
new
调用它们。Java允许您声明与类同名的方法,这是一个小错误,IIRC是其中的一个难题)

从定义中删除“
int
”返回类型:

public class Fraction{

    private int numerator;
    private int denominator;

    public  Fraction(int num, int denom) {
        //...
这将如何设置驱动程序类中的分数c中的两个数字,该类中的分数c是从扫描器util中输入的,同时,c值是否会被分数d中的值替换


您正在两次调用
新分数(…,…)
。每次使用
new
,它都会为请求的类创建一个新对象,然后使用给定的值调用该对象上的构造函数。因此
c
d
将包含对
分数的不同实例的引用。由于
分数
分子
分母
字段未标记为
静态
,因此
分数
的每个实例都将有自己的这些字段副本,因此,传递给对象构造函数的值(其引用将存储在变量
c
中)存储在第一个新对象中,而
d
的值存储在第二个新对象中。因为它们是不同的对象,所以这些值不会相互替换。

为什么不编辑旧帖子?我写了一个答案…当我格式化代码时,我可能已经压扁了一些编辑;这是无意的。道歉。仅供参考:关于如何在这里发布降价代码的详细信息:很抱歉,我试图编辑我的旧帖子,因为很多人不理解我,我试图帮助他们理解我,我在政府的电脑上,所以在这个网站上有很多东西我不清楚。我正试图为学校写一个程序,但我不太懂。我现在在值班,所以我一次要做上千件事。施工人员什么都不退吗?甚至没有类定义的类型的实例?没有。分配实例,然后在堆栈上复制,然后调用构造函数(重命名为)。你见过一个构造在结束语句中的吗?我对java非常陌生,在一天里学习了一些VB和C++。就像98年一样,但我不记得那些东西了,我对我正在做的这个项目有点困惑。如果我需要将这两个分数相加,然后打印出来,会发生什么。你需要创建一个plus()方法,它返回一个表示两个分数之和的新分数。您还需要一个将分数转换为字符串的toString()方法,然后可以调用System.out.println(c.plus(d))