2015-01-25 2 views
0

Im просто пытается out.print определенный диапазон от массива животных. Я пробовал 3 разных способа, (подсказка) код, который я прокомментировал. Операция печати всегда печатает медведя. Как это исправить?math.random с многомерными массивами

String animal[][] = { 
     {"bear","lion","wolf","panther"}, 
     {"alligator","komododragon","spyro the dragon","turtle"}, 
     {"great white","clown fish","hammer head","Nessi"}, 
     {"blue jay","red jay","eagle","crow"}, 
    }; 

    int x = (int) Math.random() * (2 - 0); 
    int y = (int) Math.random() * (4 - 0); 

    //String yourAniaml = animal[(int) Math.random() * (2-0) ][(int) Math.random() * (4-0)]; 
// System.out.println(animal[(int) Math.random() * (2-0) ][(int) Math.random() * (4-0)]); 
    System.out.println(animal[x][y]); 
+2

Убедитесь, отливать после умножения, не раньше. Также не уверен, почему вы делаете '- 0'. Таким образом, вы можете сделать что-то вроде 'int x = (int) (Math.random() * 2)'. – SamYonnou

ответ

0

Вы должны привести результат из Math.random() * foo, а не только Math.random():

int x = (int) (Math.random() * (2 - 0)); 
int y = (int) (Math.random() * (4 - 0)); 

Причина этого заключается в том, что Math.random() всегда возвращает число в диапазоне от 0 ≤ х < 1, так (int) Math.random() будет всегда должно быть 0, и нулевое время ничего не равно нулю.

0

предполагая 0,2 ваш диапазон х и 0,4 Ваш диапазон у

int x = (int) (Math.random() * (2 - 0 + 1)) + 0; 
int y = (int) (Math.random() * (4 - 0 + 1)) + 0; 
Смежные вопросы