Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.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_Arrays - Fatal编程技术网

Java 将数组传递给方法(使用随机数)

Java 将数组传递给方法(使用随机数),java,arrays,Java,Arrays,我正在一件一件地写一个程序。我继续收到编译错误。你能看看我的代码来确定我的问题吗 在这里,我是说array可以存储1000个双精度类型的元素。现在我想将数组传递给我的主方法,并将1000个随机数放入数组中。因此,我将创建一个新方法 public class Practice{ public static void main(String[] args){ double[]array=new double[1000]; } } 在这里,我创建了一个名为passArray的新

我正在一件一件地写一个程序。我继续收到编译错误。你能看看我的代码来确定我的问题吗

在这里,我是说
array
可以存储1000个双精度类型的元素。现在我想将数组传递给我的主方法,并将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);
  }
我继续遇到的问题是编译错误。但是,输出将999个值随机显示为双精度值。我到底错过了什么?

我想你有一个输入错误(从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);
      }
   }
}
公共课堂实践{
公共静态void main(字符串[]args){
double[]数组=新的double[1000];
//调用方法
帕萨雷(阵列);
//打印阵列
for(双k:数组)
系统输出println(k);
//主方法结束
}
公共静态无效通道(双[]x){

for(int counter=0;counter不确定编译错误,但int-to-double问题出现在代码的开头

您声明了double类型的数组:

double[] array = new double[1000];
您试图将随机值类型转换为int类型,编译器应该接受int类型

x[counter] = (int) (Math.random() * 1000);
然而,由于这是一个double类型的数组,那么您将把值存储为double。也就是说,值会立即被转换回double。java真正做的是,将double(例如567.97)更改为int 567,并再次将其转换为double 567.0。请注意,它现在已经丢失了所有的浮点信息将尾数设置为整数。或者用更古怪的术语来说,尾数已设置为所有0

您必须将数组声明为integer.类型,或者在每次访问值时将其转换回int

例如


编辑:您收到的是编译器错误还是警告?这是一个很大的区别。警告将允许它运行,正如您的帖子所建议的那样,错误将不会编译,因此不会运行。您可能只是收到一个关于从int转换为double的类型的警告。

引发了什么编译错误?您可以放入完整的代码吗,因为我尝试查看代码并将其汇编。它运行良好。@Natalia显示的编译错误是“一个或多个项目编译时出现错误。”我想我不应该把这么多的东西放在里面。这正是正在发生的事情。你是对的,我认为这是一个警告,而不是一个错误,因为它允许它运行。我想我将使用int而不是double。这可能是最好的选择;除非你以后需要它们作为double,否则没有必要来回转换。这只是浪费循环数。。。
x[counter] = (int) (Math.random() * 1000);
int[] array = new int[1000];

public static void passArray(int[] x) {
// code
}
System.out.println((int)k);