2014-03-13 3 views
3

Мне нужно создать размер массива 10 и генерировать случайные числа от 0 до 100, включая 0 и исключая 100. Когда я пишу код, он продолжает давать мне погрешность:Как создать случайные числа до 100 в размере массива 10

Исключение в потоке "основного" java.lang.ArrayIndexOutOfBoundsException: 59 на BillyLancasterHw6.printArray (BillyLancasterHw6.java:23) на BillyLancasterHw6.main (BillyLancasterHw6.java:13)

Вот код, который я использую.

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], " "); 
    } 
    } 
} 

Я не понять, почему я не могу генерировать случайные числа до 100 в массиве размера 10. Это означает, что 10 числа генерируются случайным образом в диапазоне от 0 до 100.

Любые предложения было бы здорово. Если вы можете указать, где в документации, я могу найти ответы. Я новичок в программировании, и у меня проблемы с этим.

+0

-1 Шанс получить 100 меньше шанса получить 99. Это не случайно. –

ответ

5

Ваш усиленный цикл for уже выполнил задачу извлечения случайного числа из вас из списка; просто распечатайте его. Не нужно возвращаться к списку.

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

Это помогло мне. Благодарю. –

2

Я немного ржавый на моей Явы, но:

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

Возможно, у меня нет вашего вопроса, но посмотрите, работает ли приведенный ниже код. Я не понимаю, почему вы используете double

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

Я начинаю программировать студента, и это было задание, которое у меня возникало из-за проблем. Преподаватель хотел удвоить. –

Смежные вопросы