Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java do while循环具有多个未正确执行的条件_Java_Loops_Do While - Fatal编程技术网

Java do while循环具有多个未正确执行的条件

Java do while循环具有多个未正确执行的条件,java,loops,do-while,Java,Loops,Do While,我必须编写一个Magic 8 ball程序来解释用户输入错误,我必须使用一个循环来做到这一点 boolean okay; do { System.out.printf("What is your question?\n"); questionStr = keyboard.nextLine(); int length = questionStr.length(); if (questionStr.length() == 0)

我必须编写一个Magic 8 ball程序来解释用户输入错误,我必须使用一个循环来做到这一点

boolean okay;
    do {
        System.out.printf("What is your question?\n");
        questionStr = keyboard.nextLine();
        int length = questionStr.length();
        if (questionStr.length() == 0) {
            System.out.println("Not allowed.");
            okay = false;
        } else if (!(questionStr.charAt(length - 1) == '?')) {
            System.out.println("Add question mark.");
            okay = false;
        } else if (questionStr.length() > 60) {
            okay = false;
        }
        okay = true;
    } while (!okay);

当我运行代码并将其设置为空字符串时,它不会打印出来,但是它仍然运行代码的其余部分,并且不会循环回并询问“What is your question?”问号也会发生同样的情况;它打印出“添加问号”,但不会像预期的那样循环返回。如果我提出一个超过60个字符的问题,代码仍然会执行,并且不会返回并继续询问用户“您的问题是什么?”直到代码少于60个字符。我试图找出我在这里做错了什么。

移动
ok=true你的
如果语句否定它之前

okay = true;
if (questionStr.length() == 0) {
    System.out.println("Not allowed.");
    okay = false;
} else if (!(questionStr.charAt(length - 1) == '?')) {
    System.out.println("Add question mark.");
    okay = false;
} else if (questionStr.length() > 60) {
    okay = false;
}

如前所述,您在条件
之前无条件地将
ok
设置为
true
,而(!ok)因此循环总是结束。

ok=true之前添加
else
。基本调试将在第一分钟内发现将
ok
设置为
true
的问题。这不是一个在线调试器。欢迎使用堆栈溢出!看起来您需要学习使用调试器。请随便吃点。如果您以后仍然有问题,请随时回来提供更多详细信息。