2013-03-03 75 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