Печать массива в цикле while - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь распечатать свой массив, используя метод, один раз, пока пользователь вводит y или Y. Я не знаю, как заставить массив печатать только один раз.

Я исследовал и попытался настроить свой собственный код, но я потерян.

public class Lab10p1 {
public static final int ROW = 5;
public static final int COL = 6;
public static final int MIN = 0;
public static final int MAX = 100;

/**
* @param args the command line arguments
*/
public static void main(String[] args) 
{
    Scanner scan=new Scanner(System.in);
    System.out.println("Do you want to start Y/N?");
    char c =scan.next().charAt(0);

    while(c=='y'||c=='Y')
    {
        int[][] a = new int[ROW][COL]; 
        randArray(a, ROW, COL, MIN, MAX);
    }
}

public static void randArray(int[][] matrix, int row, int col, int low, int up)
{     
    Random rand = new Random();   
    for (int r = 0; r < row; r++)
    {          
        for (int c = 0; c < col; c++)   
        {         
            int are=matrix[r][c] = rand.nextInt(up - low + 1) + low; 
            System.out.print(" "+are); 
        }       
        System.out.println();
    }
}

ожидаемый вывод

Продолжение (Y / N): y
Элементы массива:
12 31 12 21 45 23
32 12 67 54 35 67
34 54 33 34 53 34
23 34 43 23 45 78
23 54 89 76 54 34

Фактические результаты представляют собой бесконечный цикл печати 6x5массивы

Ответы [ 4 ]

0 голосов
/ 01 мая 2019

двумя способами

 if(c=='y'||c=='Y')
{
    int[][] a = new int[ROW][COL]; 
    randArray(a, ROW, COL, MIN, MAX);
}

или

 while(c=='y'||c=='Y')
{
    int[][] a = new int[ROW][COL]; 
    randArray(a, ROW, COL, MIN, MAX);
    break;
}
0 голосов
/ 01 мая 2019

После печати array. предложить пользователю снова ввести символ, поэтому, если он снова введет Y, массив печати снова будет выглядеть так:

while(c=='y'||c=='Y')
{
    int[][] a = new int[ROW][COL]; 
    randArray(a, ROW, COL, MIN, MAX);
    System.out.println("Do you want to start Again Y/N?");
    c = scan.next().charAt(0);
}

Или, если вы хотите, чтобы ваша программа запускалась только один раз, замените while на if.

0 голосов
/ 01 мая 2019

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

char c =scan.next().charAt(0);
int[][] a;
while(c=='y'||c=='Y')
{

a = new int[ROW][COL]; 
randArray(a, ROW, COL, MIN, MAX);
c =scan.next().charAt(0);
}

Кроме того, вам не нужно каждый раз переопределять 2D-массив.


Кроме того, вы можете использовать цикл do-while, который больше подходит для таких случаев.
0 голосов
/ 01 мая 2019

Вы должны использовать if вместо while.Если пользователь вводит Y или y, цикл никогда не завершится, потому что c никогда не устанавливается на что-либо еще, кроме Y или y внутри цикла, и, следовательно, условие цикла всегда выполняется.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...