-1

当我在输入中不输入任何内容或按取消时,我似乎无法跳出循环。有出路吗?

    While (last == '?'){
        input = (int)(Math.random()*2); 
        if (number == 1){
            answer = "Nice";
        }
        if (number == 2){
            answer = "Okay";
        }
        System.out.println("The answer: " + answer);
        input = JOptionPane.showInputDialog(null, "Ask a question. (Remember the?)");
        if (input != null && input.length() > 0){
            last = input.charAt(input.length() - 1);
        }
    }
4

2 回答 2

0

last必须在循环之外初始化,但是当您不输入任何内容或取消最后一个 if 语句评估为 false 时,因此last不会设置为新值,因此它将继续使用继续循环的前一个值。

在评估最后一个 if 语句之前,您应该重置last为 null 或空字符串。

于 2012-10-14T01:58:08.710 回答
0

问题是你的'break-the-loop'条件(if input != null && input.length() > 0)只last在它被评估为时分配一个新值true,但不输入任何内容会导致它评估为假,这意味着值last不变。

将以下内容添加到最后一个 if 块可能会修复它:

else {
    break;
}

此外,键入不以问号结尾的内容应该会打破循环。

于 2012-10-14T02:00:03.323 回答