2014-03-13 44 views
3

我必須創建一個數組大小爲10並生成從0到100的隨機數,包括0和不包括100.當我編寫代碼時,它一直給我一個在BillyLancasterHw6.main(BillyLancasterHw6.java:13)59 在BillyLancasterHw6.printArray(BillyLancasterHw6.java:23) 如何生成數組中最大爲100的隨機數爲10

:在線程 「主」 java.lang.ArrayIndexOutOfBoundsException

異常:誤差這是我正在使用的代碼。

public class BillyLancasterHw6 { 
    public static void main(String[] args){ 
    //int N = 10; 
    double[] list = new double[10]; 

    for(int i = 0; i < list.length; i++) { 
     double randomNumber = (Math.random() * 100); 
     list[i] = randomNumber; 
    } 
    printArray(list); 
    //sort(list); 
    //System.out.println(); 
    //printArray(list);  
    } 

    public static void printArray(double[] list) { 
    for(double u: list) { 
     System.out.printf("%2.2f%s", list[(int) u], " "); 
    } 
    } 
} 

我不理解爲什麼不能在尺寸10含義的陣列10倍的數字是隨機生成的0

之間和100

任何建議將是巨大的生成隨機數高達100。如果您可以參考文檔中的哪個地方,我也可以找到答案。我是編程新手,遇到麻煩。

+0

-1獲得100的機會小於獲得99的機會。這不是隨機的。 –

回答

5

您增強的for循環已經完成了從列表中提取隨機數的工作;只是打印它。沒有必要回到列表中。

System.out.printf("%2.2f%s", u, " "); 
+0

這幫了我。謝謝。 –

2

我在我的Java有點生疏,但:

for(double u: list) { 
    System.out.printf("%2.2f%s", list[(int) u], " "); 
} 

看起來很可疑。這個怎麼樣:

for(double u: list) { 
    System.out.printf("%2.2f%s", u, " "); 
} 
+0

這幫了我。謝謝。 –

-1

也許我沒有得到你的問題,但看看下面的代碼是否工作。我不明白你爲什麼使用雙倍數

public class BillyLancasterHw6 { 

public static void main(String[] args) 
{ 

    int[] randomNumber = new int[10]; 

    for(int i = 0; i < randomNumber.length; i++) 
    { 
     randomNumber[i] = (int)(Math.random() * 100); 

     System.out.print(randomNumber[i]+" , "); 
    } 
    System.out.println(); 
    } 

} 
+0

嗯,他確實說隨機_numbers_,不是整數:) – jdphenix

+0

嗯,也許他應該說明實際的數字來澄清的情況,也許相同的代碼將工作雙打,因爲他似乎是用%.2f輸出中間值感謝建設性的批評 – Damo42

+0

我是一個開始編程的學生,這是一個任務,我有問題做工。教練想要一個雙。 –