2014-08-09 3 views
-1

Я пытаюсь получить вывод случайной строки, состоящей из 1 и 0 в стиле Matrix. Я знаю, как отображать строку, состоящую из 1 и 0, но по какой-то причине я не могу продолжать ее перебирать. То, что я пытаюсь сделать, заключается в том, что всякий раз, когда StringBuilder достигает длины 20, я хочу снова запустить цикл на новой строке и повторить это 100 раз.Как создать вывод в стиле Matrix

import java.util.List; 
import java.util.Random; 

public class main { 

    static Random rand = new Random(); 
    static StringBuilder x = new StringBuilder(); 
    static int a = 0; 

    public static void main(String[] args) { 
     generatingnumber(); 
    } 

    public static void generatingnumber() { 

     for (int bv = 0; bv <= 100; bv++) { 

      int random = rand.nextInt(50); 

      if (random % 2 == 0) { 
       x.append(" 0"); 
      } else { 
       x.append(" 1"); 
      } 

      if (x.length() == 20) { 
       System.out.println(x); 
      } 
     } 
    } 
} 
+1

Вы забыли [сбросить свой экземпляр 'StringBuilder'] (http://stackoverflow.com/questions/5192512/how-can-i-clear-or-empty-a-stringbuilder) после' println'. –

ответ

0
public class MatrixFilm { 

    public static void main(String[] args) { 
     int rows = 100; 
     int cols = 20; 

     for (int count1 = 0; count1 < (rows * cols); count1++) { 
      for (int count2 = 0; count2 < cols; count2++) { 
       int randomNum = 0 + (int) (Math.random() * 2); 
       System.out.print(" " + randomNum); 
      } 
      System.out.println(); 
     } 
    } 
} 


Результат:

0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 1 1 1 1 
1 1 0 1 1 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 
0 1 0 0 1 0 1 1 0 0 1 1 1 0 1 1 1 1 1 0 
0 1 0 1 1 1 1 1 0 0 1 1 0 0 0 1 1 0 1 0 
0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 
.... 
0

Ваша строка имеет длину 20 символов только один раз. Вас не интересует ли x.length() == 20, но если x.length() % 20 == 0.

Для новой строки вы можете добавить "\n" (или "\r\n" для Windows-машины) в строку, каждый раз перед ее печатью.

Изменить println на print (который не добавляет новый символ линии в конце печатной строки), чтобы поддерживать непрерывность между отпечатками.

Принимая во внимание все:

if (x.length() % 20 == 0) { 
    x.append("\r\n"); 
    System.out.print(x); 
} 

Однако до сих пор не было бы достаточно, для «\ г \ п» само по себе добавляет к длине строки. Это должно работать:

if (x.length() % 20 == 0) { 
    x.replace(x.length() - 2, x.length(), "\r\n"); 
    System.out.print(x); 
} 

Вы можете также - и это было бы лучше ... - сбросить строку, а @owlstead упомянул.

if (x.length() == 20) { 
    System.out.println(x); 
    x.setLength(0); 
} 

В любом случае; что я представил не решение проблемы. Единственное решение - возможно, неправильное - подходит вам в настоящее время.

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