while循环多条件java

时间:2013-07-15 02:55:49

标签: java while-loop

基本上,我的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();
  }
}


}

3 个答案:

答案 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,你的循环体永远不会执行。