基本上,我的while循环将在长度条件不存在时评估前两个条件;但是当我有长度条件时,循环只评估该条件。我不确定是什么问题。
input=keyboard.next();
while (input.charAt(0)!='F'&&input.charAt(0)!='K'&&input.length()>1) {
System.out.println("invalid");
input=keyboard.next();
}
如果我错过了一些非常明显的事情(我可能是这样),我很抱歉占用你的时间,但是不管怎样,我还是花时间来看看这个问题。
我只是将我的代码移动到一个新文件,但它仍然无法正常工作。我不明白为什么我被贬低,因为我只是在问一个问题,还没有得到答案。
import java.util.Scanner;
public class test123444 {
public static void main(String[] args) {
Scanner keyboard=new Scanner(System.in);
String input;
input=keyboard.next();
while (input.charAt(0)!='F'&&input.charAt(0)!='K'&&input.length()>1) {
System.out.println("invalid");
input=keyboard.next();
}
}
}
答案 0 :(得分:3)
正如Kon在上面的评论中暗示的那样,你需要写的是:
while (input.charAt(0) != 'F' && input.charAt(0) != 'K' || input.length() > 1) {
那就是 - 如果input
有多个字符或,如果第一个字符既不是'F'
也不是'K'
,那么您希望循环运行。仅当input
有多个字符并且其第一个字符既不是'F'
也不是'K'
时,您当前的代码才会进入循环。
或者,更好的是:
while (! input.equals("F") && ! input.equals("K")) {
答案 1 :(得分:-1)
在while循环中,指定input.length() > 1
条件。由于您使用keyboard.next()
来获取下一个输入,因此我认为input
的长度只有1.这就是为什么它可以删除该测试用例。
如果要循环浏览用户可以通过控制台输入的字符串,请使用Scanner
。您可以通过使用它来监听控制台输入来使用它:new Scanner(System.in)
。使用scanner.next()
等待输入。
答案 2 :(得分:-1)
问题是input.length() > 1
总是false
,这使得while
循环中的测试条件为false(对于&&
,如果一个条件为false,则整件事是false
)
因此,如果您将input.length()>1
置于您的状态,无论input.charAt(0)!='F'
是true/false
还是input.charAt(0)!='K'
是true/false
,第三个条件都将是false,你的循环体永远不会执行。