0

我在使用以下程序时遇到问题。我希望输入具有“值”形式,后跟一个双精度值,如果输入不是这种形式,我想返回一条错误消息。本质上,我想检查第一个单词是否为“value”(如果不是,则返回“false”),然后我想检查是否存在另一个标记,并且此标记是双精度(如果不是这种情况,则返回错误的)。但是,我遇到了麻烦,因为如果我只是输入“值”作为输入,程序只会等待我输入另一个标记,而不是返回“预期值”。就像我想要的那样。这是代码:

import java.util.Scanner;
public class scanCheck {
    public static void main(String[] args) {

Scanner kb = new Scanner(System.in);
double a;
String str;

str = kb.next();
if (!str.equals("value"))
    System.out.print("Invalid format.");
else {
    if (kb.hasNext())
        if (kb.hasNextDouble())
            a = kb.nextDouble();
        else
            System.out.println("Value expected.");
    else 
        System.out.println("Value expected.");
    }
    }
}

谢谢!

4

2 回答 2

1

由于您正在等待用户命令,因此 kb.hasNext() 永远不会真正评估为假。所以这段代码正在按照它应该的方式运行。如果您希望在用户键入值之后出现“预期值”,请移动 println 语句。

else {
    System.out.println("Value expected.");
    if (kb.hasNextDouble()){
         a = kb.nextDouble();
    }else {
         System.out.println("Value expected.");
    }
于 2013-07-09T18:45:58.030 回答
0

尝试这个:

    str = kb.next();
    if (!str.equals("value")){
        System.out.print("Invalid format.");
        System.exit(0);
       }
于 2013-07-09T18:46:32.690 回答