即使给定条件满足条件,我在Java中的do while循环也只会运行一次

时间:2019-03-23 15:25:56

标签: java

我的循环只运行一次。

此代码假设采用主队名称,客队名称,主队得分,客队得分并将其存储。输入“ EXIT”时,它仅应退出循环。但是循环只运行一次。出口部分起作用。我是Java的新手,如果只是一个小错误,对不起。

我还没有处理任何异常,因此代码不完整。

    String[] ht_name = new String[9999];
    String[] at_name = new String[9999];
    int[] ht_score = new int[9999];
    int[] at_score = new int[9999];
    Scanner scanint = new Scanner(System.in);
    Scanner scanstr = new Scanner(System.in);

    int i=0;
            //do while loop starts
    do {

        System.out.println("Enter Home team name: ");

        ht_name[i] = scanstr.nextLine();

            if(!ht_name[i].equalsIgnoreCase("exit"))
            {
                System.out.println("Enter Away team name: ");
                at_name[i] = scanstr.nextLine();

                System.out.println("Enter Home team score: ");
                ht_score[i] = scanint.nextInt();


                System.out.println("Enter Away team score: ");
                at_score[i] = scanint.nextInt();

                i++;
            }

        } while (!ht_name[i].equalsIgnoreCase("exit"));
       //do while loop ends
    }}

3 个答案:

答案 0 :(得分:3)

您的索引计算错误, 最后一行代码应如下所示:

while (!ht_name[i-1].equalsIgnoreCase("exit"))

答案 1 :(得分:2)

此代码为您提供or,因为您增加了NullPointerException变量,然后紧接着从i数组中的i索引处获取了一个值,该值等于null。

您的代码应该看起来像这样:

ht_name

答案 2 :(得分:1)

问题在于您的while逻辑。您正在检查尚不存在的索引的值。记住你已经增加了。这样想吧:

  • 用户输入一个字符串
  • 您检查字符串是否等于“ exit”
  • 如果是,则执行操作,然后增加计数器
  • 在while循环中,然后检查上一个索引中的元素 是否为“退出”。如果是这样,则停止循环。

如您所见,您的错误在于最后一步。您应该检查上一个索引中的元素,而不是当前索引中的元素。只需将while条件更改为此:

while (!ht_name[i-1].equalsIgnoreCase("exit"))

我希望这对您有所帮助。快乐的编码。