【问题标题】:While-loop(if else statement)While 循环(if else 语句)
【发布时间】:2015-11-08 13:10:36
【问题描述】:

我希望我的程序输入 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++;
           }
       }
    }

【问题讨论】:

  • 你在哪里定义magic_square?
  • 您需要counter 做什么?除了递增之外,它从未使用过......

标签: java if-statement while-loop conditional


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 它可以工作,但还有一个问题,它有一个错误。 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 at MP1.main(MP1.java:35)不输出输入的数字。
  • 糟糕。我的错。那是因为我在设置它之前增加了计数器。我已更正并更新了我的答案
猜你喜欢
  • 2012-06-18
  • 2015-04-07
  • 1970-01-01
  • 2014-07-01
  • 2016-10-22
  • 2023-03-30
  • 1970-01-01
  • 2012-03-12
  • 2017-02-06
相关资源
最近更新 更多