while 循环(if else 语句)

While-loop(if else statement)

我想让我的程序输入 9 个数字。如果我输入一个小于零或大于九的数字,它应该返回并再次要求你输入另一个数字。附图是我的程序有问题。

    Scanner input = new Scanner(System.in);
    int magic_square[][]=new int[3][3];
    int counter = 0;
    while(true){
      System.out.println("Enter the Magic Number: ");
      for(int i = 0; i < 3; i++)
      {
          for(int j = 0; j < 3; j++)
          {
              System.out.println("Number "+(i+1)*(j+1));
              magic_square[i][j] = input.nextInt();
              if (magic_square[i][j] < 1 || magic_square[i][j] > 9)
                System.out.println("ERROR! Input range is invalid.");
              else
                counter++;
           }
       }
    }

您可以取消嵌套的 for 循环并利用 counter 变量。

  1. 只需使用您的 counter 变量:counter/3 将指向行,counter%3 将指向列。

  2. counter < 9 将有助于避免 while(true) 方法,我个人不推荐这种方法。

此外,您的代码允许无效数字进入数组并继续到下一个位置,这不是您 post.

的预期行为
    Scanner input = new Scanner(System.in);
    int magic_square[][]=new int[3][3];
    int counter = 0;
    System.out.println("Enter the Magic Number: ");
    while(counter < 9){
      System.out.println("Number "+(counter+1));
      int input_num = input.nextInt();
      if (input_num < 1 || input_num > 9){
         System.out.println("ERROR! Input range is invalid.");
       } else {
          magic_square[counter/3][counter%3] = input_num;
          counter++;
       }
    }