2016-12-15 17 views
-5
package test; 

public class Test { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     double[] myList=new double[10]; 
     System.out.println("enter values"); 
     for (int i = 1; i < myList.length; i++) { 
      java.util.Scanner input=new java.util.Scanner(System.in); 
      int j = (int)Math.random() * myList.length; 
      double tmp=myList[j]; 
      myList[i]=myList[j]; 
      myList[j]=tmp; 
      System.out.println(tmp);  
     } 
    } 
} 

为什么打印0.0排列中的数字

+1

你从来不把任何数值数组中。你只是交换了一堆'0.0'双打。 – CollinD

+0

您是否曾经使用'Scanner'对象'input'(创建了10次)? int类型的默认值是0 – GurV

+0

除了方法及其输出外,您能否向我们提供更多信息? –

回答

0

双精度和整数初始化为0,所以你的数组实际上是10个零。

你需要几件事情:

double[] myList=new double[10]; 
System.out.println("enter values"); 
java.util.Scanner input=new java.util.Scanner(System.in); 
for (int i = 0; i < myList.length; i++) { 
    myList[i] = input.nextDouble();// get input from user and put it into array 
} 
//and then we swap 
for (int i = 0; i < myList.length; i++) { 
    int j = (int)Math.random() * myList.length; 
    double tmp=myList[j]; 
    myList[i]=myList[j]; 
    myList[j]=tmp; 
} 
System.out.println(tmp); 

有几个问题:

  1. Scanner完全不被使用,并且创建了10次(因为它是在循环)
  2. 您没有初始化阵列,所以所有的值都是0.0

  3. 你开始在索引1循环,这样你就错过了一些值

+2

downvoter,请详细说明 – ItamarG3

+0

这是下来的选民:http:// meta。 stackoverflow.com/questions/255459/is-it-okay-to-downvote-answers-to-bad-questions/255861#255861 – user3437460

+0

@ user3437460哇。非常感谢(这根本没有讽刺意味,我至少在一个月内一直在寻找类似的东西) – ItamarG3

0

,如果你想真正刷卡值比回路应如下

for (int i = 0; i < myList.length; i++) { 
    int j = (int)Math.random() * myList.length; 
    double tmp=myList[i]; 
    myList[i]=myList[j]; 
    myList[j]=tmp; 
}