while循环(if else语句)

时间:2015-08-15 11:32:28

标签: java if-statement while-loop conditional

我希望我的程序输入9个数字。如果我输入一个小于零或大于九的数字,它应该循环返回并再次要求您输入另一个数字。附加的图片是我的程序,有问题。enter image description here

    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++;
           }
       }
    }

1 个答案:

答案 0 :(得分:2)

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

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

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

  3. 此外,您的代码允许无效的数字进入数组并继续进入下一个位置,这不是根据您的帖子的预期行为。

        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++;
           }
        }