我正在逐件编写程序。我继续收到编译错误。你能看一下我的代码来确定我的问题吗?
所以在这里,我说array
可以存储双重类型的1000个元素。现在我想将数组传递给我的main方法并将1000个随机数放入数组中。所以我将创建一个新方法。
public class Practice{
public static void main(String[] args){
double[]array=new double[1000];
}
}
在这里,我创建了一个名为passArray
的新方法。我试图说,对于每个数组元素在其各自的索引(基于计数)分配一个随机整数,直到我们达到1000.
public static void passArray(double[]x){
for(int counter=0; counter<x.length; counter++){
x[counter]=(int)(Math.random()*1000);
}
好的,现在我想打印我的结果,以确定我的代码是否符合我的要求。在我的main方法中,我将使用增强的for循环:
for(double k: array)
System.out.println(k);
}//End of main Method
我继续遇到的问题是编译错误。但是,输出随机显示999值作为双精度值。我在这里错过了什么?
答案 0 :(得分:1)
我认为你有一个拼写错误(从for循环中删除'}')
并且您需要将数组传递给方法以使其工作。
编译并运行:
public class Practice{
public static void main(String[] args){
double[]array=new double[1000];
// calling the method
passArray(array);
// print the array
for(double k: array)
System.out.println(k);
//End of main Method
}
public static void passArray(double[]x){
for(int counter=0; counter<x.length; counter++){
// compiles ... but why cast to int if you have double[] ?
x[counter]=(int)(Math.random()*1000);
}
}
}
答案 1 :(得分:-1)
不确定编译错误,但是你的int to double问题出现在代码的开头。
您声明了一个double类型的数组:
double[] array = new double[1000];
您正在尝试将随机值类型转换为int类型,编译器应该接受它。
x[counter] = (int) (Math.random() * 1000);
但是,由于这是double类型的数组,因此您将值存储为double。即价值会立即转为双倍。 java正在做的就是从双变换,例如。 567.97,对于一个int 567,并再次将其作为双倍567.0。请注意,它现在已经丢失了所有浮点信息,无法将其转换为int。或者更为古怪的是,尾数已被设置为全0。
您必须将数组声明为整数类型。或者每次访问值时都返回int。
例如
int[] array = new int[1000];
public static void passArray(int[] x) {
// code
}
或
System.out.println((int)k);
编辑:您是否收到编译错误或警告?有很大的不同。警告将允许它运行,你的帖子建议发生,错误将无法编译,因此不会运行。您可能只是收到关于从int到double的类型转换的警告。