Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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创建数组的讲座。教授介绍了以下代码,并声称该代码将创建分数,如1/6、2/6等(我添加了main(),以便可以对其进行测试) 公共类测试{ 公共静态void main(字符串[]args){ 分数[]f=新分数[5]; 对于(int i=0;i_Java_Arrays - Fatal编程技术网

这段关于数组的代码有意义吗? 我正在看加州大学伯克利分校的一个关于用java创建数组的讲座。教授介绍了以下代码,并声称该代码将创建分数,如1/6、2/6等(我添加了main(),以便可以对其进行测试) 公共类测试{ 公共静态void main(字符串[]args){ 分数[]f=新分数[5]; 对于(int i=0;i

这段关于数组的代码有意义吗? 我正在看加州大学伯克利分校的一个关于用java创建数组的讲座。教授介绍了以下代码,并声称该代码将创建分数,如1/6、2/6等(我添加了main(),以便可以对其进行测试) 公共类测试{ 公共静态void main(字符串[]args){ 分数[]f=新分数[5]; 对于(int i=0;i,java,arrays,Java,Arrays,那么,如果分数类有一个方法返回一个double或一个float,那么它实际上可以用int很好地构造 然后,内部逻辑将负责处理和返回正确的类型 考虑这个例子: public static void main(String[] args) { System.out.println(new Fraction(1, 6).getFraction()); } static class Fraction { private float fraction; public Fractio

那么,如果
分数
类有一个方法返回一个
double
或一个
float
,那么它实际上可以用
int
很好地构造

然后,内部逻辑将负责处理和返回正确的类型

考虑这个例子:

public static void main(String[] args) {
    System.out.println(new Fraction(1, 6).getFraction());
}
static class Fraction {
    private float fraction;
    public Fraction(int num, int den) {
        // TODO check that den != 0, otherwise we're in a world of trouble :D
        fraction = (float) num/den;
    }
    public float getFraction() {
        return fraction;
    }
}
输出:

0.16666667

为了创建
Fraction
对象数组,需要创建
Fraction

从StephenTG的评论来看,您似乎需要导入eclipse


(出于测试目的,This Fraction.java有一个
main
方法。您可以将代码放在该方法中,如果您想使用自己的
main
方法,则需要删除该方法。)首先,请注意,这将从
0/6
开始,而不是
1/6
。其次,教授很可能指的是一个假设的
分数
类,它存储精确的分数(即分子和分母为两个
int
s);而
双精度
则不能做到这一点

现在,如果要使用double(它本身不会存储精确分数,而是存储它们所表示的近似数字),则必须使用double除法(而不是整数除法,正如您当前执行的那样):


正如@StephenTG所指出的,
分数类似乎已经实现了。

是和否。这是:

f[i] = new Fraction(i, 6);
意味着

存储在f数组的位置i上,该分数对象

f
是一个
分数[]
,这意味着每个索引都包含一个
分数
类型化对象。您需要创建一个新对象(即
新的Ftaction(1,6)
)为了存储
1/6
。关于存储什么你是对的,你只是没有了解你如何表示它的全貌


为了您的课堂,我假设
Fraction
是您的老师创建的一种类型,您必须将其包含在项目中(正如其他人正确建议的,您可能正在搜索课堂)

这里有Fraction class:

我想这也是你们班的一部分。 您必须下载此文件并将其添加到项目中。

您应该首先定义一个分数类:

public class Fraction
{
    int numerator;
    int denominator;

    public Fraction(){}

    /* watch out for a division by zero Exception! 
     * maybe throw a custom exception here
    */
    public Fraction(int n, int d){
        numerator = n;
        denominator = d;
    }

    public float getValue(){
       return numerator * 1.0f/denominator;
    }
}

只有当
分数
类有一个
构造函数
接受两个整数值(例如)时,您的第一个代码片段才有意义:

对于问题的第二部分,循环将首先
返回
一个
整数
,然后
键入cast
将其转换为
double
。因此,在您的情况下,结果将始终为零,即使您知道它不应该为零。要解决此问题,以下两行代码中的任何一行都可以

f[i] = ((i + 0.0)/6);


看看这个:显然分数是一个用户定义的类,正如StephenTG所发布的。显然这些课程可能包括实验室和家庭作业中的内容。
f[i] = new Fraction(i, 6);
public class Fraction
{
    int numerator;
    int denominator;

    public Fraction(){}

    /* watch out for a division by zero Exception! 
     * maybe throw a custom exception here
    */
    public Fraction(int n, int d){
        numerator = n;
        denominator = d;
    }

    public float getValue(){
       return numerator * 1.0f/denominator;
    }
}
class Fraction
{
    private int val1, val2;

    public Fraction(int val1, int val2)
    {
        this.val1 = val1;
        this.val2 = val2;
    }
}
f[i] = ((i + 0.0)/6);
f[i] = (i/6.0);