-3

所以本质上,当长度条件不存在时,我的 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();
  }
}


}
4

3 回答 3

3

正如 Kon 在上面的评论中暗示的那样,你需要写的是:

while (input.charAt(0) != 'F' && input.charAt(0) != 'K' || input.length() > 1) {

也就是说——如果input有多个字符或者如果它的第一个字符既不是'F'也不是,你希望你的循环运行'K'input只有当有多个字符并且它的第一个字符不是'F'nor时,您当前的代码才会进入循环'K'

或者,更好的是:

while (! input.equals("F") && ! input.equals("K")) {
于 2013-07-15T03:06:13.790 回答
-1

在您的 while 循环中,您指定input.length() > 1条件。由于您使用keyboard.next()的是获取下一个输入,因此我假设它input的长度仅为 1。这就是为什么如果您删除该测试用例它会起作用的原因。

如果您想遍历用户可以输入到控制台的字符串,请使用Scanner. 您可以通过使其监听控制台输入来使用它,如下所示new Scanner(System.in):用于scanner.next()等待输入。

于 2013-07-15T03:00:16.540 回答
-1

问题是input.length() > 1总是false,这使得while循环中的测试条件为假(对于&&,如果一个条件为假,那么整个事情就是false

因此,如果您离开input.length()>1您的条件,无论 if input.charAt(0)!='F'istrue/false还是input.charAt(0)!='K'is true/false,第三个条件都将为 false 并且您的循环体永远不会执行。

于 2013-07-15T03:00:38.400 回答