2015-07-02 3 views
0

Мой следующий код в основном чей-то еще, мне удалось выяснить, как напечатать правильный диапазон, но теперь я хочу печатать этот диапазон (массив) несколько раз.Как распечатать массив несколько раз?

public class lottery { 
    public static void main(String[] args) { 

    int[] lottery = new int[6]; 
    int randomNum; 

    for (int i = 0; i < 6; i++) { 
     randomNum = (int) Math.ceil(Math.random() * 59); // Random number created here. 
     for (int x = 0; x < i; x++) { 
      if (lottery[x] == randomNum) // Here, code checks if same random number generated before. 
      { 
       randomNum = (int) Math.ceil(Math.random() * 59);// If random number is same, another number generated. 
       x = -1; // restart the loop 
      } 

     } 
     lottery[i] = randomNum; 
    } 

    for (int i = 0; i < lottery.length; i++) 
     System.out.print(lottery[i] + " "); 

    }  
} 

Выход, как и ожидалось шесть целых чисел в строке:

12 52 46 22 7 33 

Я, к сожалению, не удалось найти что-либо непосредственное отношение к моему вопросу. Я абсолютный начинающий Java, поэтому, пожалуйста, будьте осторожны.

Выход, который я хочу, состоит в следующем, где каждый x является случайным числом.

x x x x x x 
    x x x x x x 
    x x x x x x 
    x x x x x x 
    x x x x x x 

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

+0

Итак, вы хотите напечатать 6 не повторяющихся случайных чисел между 0-59 ?? Это ваш вопрос ??? – ganeshvjy

+0

Как насчет 'System.out.println (java.util.Arrays.toString (лотерея));' – adatapost

ответ

1

Вы имеете в виду что-то вроде этого?

for(int j = 0; j< numberOfTimeToPrint; j++) 
    { 
    for (int i = 0; i < lottery.length; i++) 
     System.out.print(lottery[i] + " "); 
    System.out.print("\n\n"); // 2 line feeds, 1 to terminate the line and another for a blank 
    } 
+0

Кажется, это то, что я ищу. Можете ли вы рассказать мне, как вставить разрыв строки между каждой итерацией цикла for? :) –

+0

@Brad Newland: два способа: 'System.out.println (" ");' или 'System.out.print ("/n ");'. Или просто замените вызов этой функции с помощью println(). –

+0

Как заметил Рон Томпсон, есть много способов сделать это. Я изменил свой образец, чтобы добавить перевод строки после каждого набора. – SteveFerg

0
for(int i = 0; i < lottery.length * howManyToPrint; i++){ 
    System.out.print(lottery[i] + " "); 
} 
0

Попробуйте это так. Вы можете использовать сканер для ввода количества раз, которое требуется yu.

public class lottery { 
    public static void main(String[] args) { 
     int noTimes = 7; 


     for (int j = 0; j < noTimes; j++) { 
      int[] lottery = getRand(); 
      for (int i = 0; i < lottery.length; i++) { 
       System.out.print(lottery[i] + " "); 
      } 
      System.out.println("\n"); 
     } 
    } 

    public int[] getRand() { 
     int[] lottery = new int[6]; 
     int randomNum; 
     for (int i = 0; i < 6; i++) { 
      randomNum = (int) Math.ceil(Math.random() * 59); // Random number created here. 
      for (int x = 0; x < i; x++) { 
       if (lottery[x] == randomNum) // Here, code checks if same random number generated before. 
       { 
        randomNum = (int) Math.ceil(Math.random() * 59);// If random number is same, another number generated. 
        x = -1; // restart the loop 
       } 

      } 
      lottery[i] = randomNum; 
     } 

     return lottery; 
    } 
} 
+0

Когда я делаю int noTimes больше, чем массив (6), я получаю ошибки исключения. (Исключение в потоке «main» java.lang.ArrayIndexOutOfBoundsException: 6) Если быть точным. Когда я делаю это меньше, 5, например, программа компилируется и работает нормально, но все равно только печатает массив один раз. –

+0

Игнорируйте мой предыдущий комментарий, пожалуйста, я неправильно понял. Это делает то, что я хочу, но я ожидал, что новая строка сломает каждую итерацию цикла. Таким образом, каждое из 6 случайных чисел будет новой строкой. –

+0

Значит, вы хотите новый массив на каждой итерации цикла? Если да, ответьте, я отправлю его вам. – ramzavil