2015-04-10 2 views
1

Недавно я начал изучать Java и имел множество проблем. Я пробовал поиск на веб-сайте, но я не могу получить ответ, который мне нужен. Извиняюсь, если есть ответ, и ошибка с моей стороны.Создание случайных чисел между 2 значениями в массиве 2d

Пожалуйста, обратите внимание на мой код первой:

import java.util.Random; 


public class Test { 
    public static void main (String args[]) { 
     Random num = new Random(); 
     int[][] multi = new int [3][]; 
     int test = 1;    // comments for stackoverflow questions 
     int test2 = 10;   // how can i create something that will range from 1-9? 
     int test3 = test2-test; // trying this has always generated 0-9 instead 

    multi[0] = new int [] {num.nextInt(test3), num.nextInt(test3), num.nextInt(test3)}; 
    multi[1] = new int [] {num.nextInt(test3), num.nextInt(10), num.nextInt(10)}; 
    multi[2] = new int [] {test3, test3, num.nextInt(10)}; 

// PLEASE IGNORE THE 2D ARRAYS, it's just something I am testing on 

    int rows = 3; 
    int columns = 3; 

    for(int i=0; i<rows; i++) { 
     for (int j=0; j<columns; j++) { 
      System.out.print(multi[i][j] + "\t"); 
     } 
     System.out.println(); 
    } 
    } 
} 

Я пытаюсь моделировать джек-пот, в результате чего я хочу, чтобы генерировать числа от 1 до 9 во всех 2D-массива я создал. Однако я не знаю, как генерировать числа между 1 до 9 я создавать диапазоны только 0-10 и 0-9

Моя идея заключается в том, что, как только я закончу этот 2D массив диапазонов 1-9, тогда я мог бы использовать определенное количество операторов if-else, чтобы пользователь выиграл джек-пот, когда центральная строка или диагональные строки имеют 3 одинаковых номера.

Я также попытался с помощью:

int test3 = num.nextInt(test2-test+1)-test; 

Это будет генерировать числа между 1-9 но если бы я должен был использовать все это, он всегда будет генерировать те же числа ко мне, в противном случае она дает исключение из-за отрицательных чисел.

+1

Попробуйте добавить "1" к вашему случайному результату, чтобы изменить "нижнюю" границу. – GhostCat

+0

@ Jägermeister, что вы имеете в виду? – reyareya

+0

@reyareya Я думаю, что он означает создание случайного числа между 0-8 и затем добавление 1 к этому результату. – Danny

ответ

1

, если вы хотите только случайное число между инклюзивным 1 и 9, это должно помочь:

Random r = new Random(); 
int num = r.nextInt(9) + 1; 
0

Для генерации значения из 1-9:

Random random = new Random(); 
int n = random.nextInt(9) + 1; 

Чтобы применить это в вашем случае :

multi[0] = new int [] 
    {num.nextInt(9) + 1, num.nextInt(9) + 1, num.nextInt(9) + 1}; 
+0

ohmygod !!! благодаря! так просто, как это выглядит/звучит, это работает отлично. Я никогда не думал, что использование простого «+1» будет работать немедленно. Я думал, что это проблема целых чисел, которые я использовал ..... – reyareya

+0

Возможно, вы просто подумали, что метод Random.nextInt() 'всегда возвращает значение не менее 1? ;) Я предлагаю вам прочитать Java API, неплохо узнать, что вы можете делать со своими стандартными библиотеками. http://docs.oracle.com/javase/7/docs/api/java/util/Random.html#nextInt%28int%29 – zxgear

0

Вы можете сгенерировать случайное число, как это:

Math.rand() * i // Generate number between 0 and i-1 

Или

Math.rand() * i + 1 // Generate number between 1 and i 
+0

Он уже генерирует номер, который звучит, но это 0-9, когда он хочет 1-9. – Danny

+0

@ Danny Спасибо, проверьте обновление – CMPS

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