这段关于数组的代码有意义吗? 我正在看加州大学伯克利分校的一个关于用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);