2013-03-03 116 views
2

這是課堂作業。我一直在閱讀和搜索,一切都告訴我使用java.util.Random,我瞭解它是如何工作的並希望我可以使用它。但我的任務明確告訴我使用(int)(Math.random * number),我很難看到將數組應用到哪裏。我見過的所有東西都是從Java中隨機抽取的。 這是生成100個隨機整數0-9和它們發生多少次。如果有人可以協助? 我的錯誤是 - 「main」java.lang.array索引超出範圍豁免的異常:10,顯然我的代碼中有些東西也是錯誤的。如何將隨機數添加到數組

public class NumberOfTimes{ 

    public static void main(String[] args){ 

    int rand = (int)(Math.random() * 10); 
    int[] counts = new int [10]; 

    for(int i = 0; i < 100; i++){ 

     counts[i]++; 
    }//end for 

    System.out.println("number\t" + "occurence "); 

    for (int num = 0; num < counts.length; num++){ 

     System.out.println(num + "\t" + counts[num]); 
    }//end for 

    }//end main 

}//end NumberOfTimes 
+9

你聲明的長度10的陣列,然後你要訪問元素多達99指數... – 2013-03-03 02:19:19

+0

使用一致的和代碼塊的邏輯縮進。代碼的縮進旨在幫助人們理解程序流程。 – 2013-03-03 02:21:49

+1

請以更清晰和有組織的方式重新描述您對問題的描述。 – 2013-03-03 02:22:12

回答

1

做出這種改變

int[] counts = new int[100]; 
for (int i = 0; i < counts.length; i++) { 
    counts[i] = (int) (Math.random() * 10); 
}// end for 
+0

是的!謝謝。這幾乎總是引發我的簡單解決方案。 – Lish 2013-03-03 02:46:46

0

你的陣列只能容納10個項目,並在你的循環您正在訪問超過10個。可以通過兩種方式來解決。

  • 請增加數組的長度

    int[] counts = new int [100]; 
    
  • 或者要麼減少你計數的循環。

    for(int i = 0; i < 10; i++){ 
    
+0

我將num的代碼改爲<10,並像魅力一樣工作。 – Lish 2013-03-03 02:45:46

+0

@Lish,很高興能幫到你。 – Starx 2013-03-03 02:46:38