2016-12-15 36 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; 
}