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

时间:2015-10-06 16:23:42

标签: java arrays

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

所以在这里,我说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值作为双精度值。我在这里错过了什么?

2 个答案:

答案 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的类型转换的警告。