Java 不断要求用户输入数据,陷入无休止的循环

Java 不断要求用户输入数据,陷入无休止的循环,java,while-loop,user-input,Java,While Loop,User Input,我希望我的用户继续输入员工编号,直到用户输入-1,这将停止循环。但我的代码一直在打印输入的数字,不会再问其他问题 System.out.println("Which employee number do you want to see -->"); index = myScanner.nextInt(); while (payData.getOneEmpNum(index) != -1) { if (payData.getOneEmpNum

我希望我的用户继续输入员工编号,直到用户输入-1,这将停止循环。但我的代码一直在打印输入的数字,不会再问其他问题

    System.out.println("Which employee number do you want to see -->");
    index = myScanner.nextInt();

    while (payData.getOneEmpNum(index) != -1)
    {
        if (payData.getOneEmpNum(index) >= 0)
        {   
            System.out.printf("Sequential found employee #%d ",payData.getOneEmpNum(index));
            System.out.printf("and the pay rate is $%.2f.\n ",  payData.getPayRate(index));

            System.out.printf("Binary found employee #%d ",payData.getOneEmpNum(index));
            System.out.printf("and the pay rate is $%.2f.\n ",  payData.getPayRate(index));
        }
        else
        {
            System.out.println("Invalid employee number!");
        }

        System.out.println("Which employee number do you want to see -->");
    }
您没有在while循环中更新索引。在循环末尾添加此行:

index = myScanner.nextInt();

在System.out.println之后,您希望看到哪个员工编号->

现在您已经更新了代码,看起来您只需要一个index=myScanner.nextInt;在你的while循环中。按照当前的设置方式,您希望它位于最后一条println语句下面。

您应该替换代码的前几行:

while ((index = myScanner.nextInt()) != -1)
{
    if (payData.getOneEmpNum(index) >= 0)
    {   

我看不出在while循环中你在哪里请求输入?什么会导致payData.getOneEmpNumindex发生更改,从而导致循环中断?获取循环索引内的下一个输入=myScanner.nextInt;谢谢,但是现在如果它是一个无效的号码,它将不会打印该行。它只是结束了循环,不是全部的重点。。。要在用户提供-1时结束循环?是,但它也需要在我的if语句中有效。我还尝试了payData.getOneEmpNumindex!=-1 | | payData.getoneempnumidex>=0,如果我输入200,它仍然通过循环。它应该说一个无效的数字,并在它经过的过程中再次提问!您告诉程序接受一个大于等于0的数字。请为类似的事情使用调试器,否则这种意见交流将变成一次全面的对话。我认为这不起作用。在Java中,x=y将基于成功返回布尔值,而不是运算结果的整数?也许我错了。=是赋值运算符,不是比较运算符。x==y将返回我在这里没有使用的布尔值@是的,赋值运算符返回一个值。我相信它返回一个布尔值,表示C++是MyScNANNER的成功。NEXT将永远不会返回布尔值,它将返回整数->通过赋值为index by =操作符->这个整数。现在将将这个索引的值值与不等式与-=的1进行比较。操作人员C、C++、C或java,在任何语言中,这都是会发生的。我不明白这里有什么不清楚的@捣碎最好在怀疑之前尝试上面的答案。我实际上不正确地说C++在这里成功地返回了一个布尔值,它实际上返回了被指派的对象,就像java一样。所以是的,这会有用的,对不起!