验证负数

时间:2013-12-04 19:50:39

标签: java validation

System.out.print("Price of the book? ");
        while (!keyboard.hasNextDouble() || priceOfBook <=0)
        {
        System.err.print("Invalid input - Price of " + bookTitle + "? ");
        keyboard.nextLine();
        }
        priceOfBook = keyboard.nextDouble();

我试图基本上验证上面的代码,以便用户不能输入负数或字母或空双打,但它不起作用,我无法看到我出错的地方。有人可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

你把

    priceOfBook = keyboard.nextDouble();

在你的while循环之外:)尝试这样:

while (priceOfBook <= 0)
{
  System.err.print("Invalid input - Price of " + bookTitle + "? ");
  priceOfBook = keyboard.nextDouble();
}

这样它就会不断询问用户是否输入了一个数字&lt; 0

答案 1 :(得分:0)

priceOfBook循环之后,您不会将用户的输入分配到while。因此,当您的循环检查priceOfBook是否为负时,它不会检查用户的输入,而是检查先前存储的值(如果有的话)。这允许用户的输入(即使它是否定的)通过while循环,然后保存为priceOfBook

尝试改为:

while (!keyboard.hasNextDouble() || priceOfBook = keyboard.nextDouble() <=0) {
    System.err.print("Invalid input - Price of " + bookTitle + "? ");
    keyboard.nextLine();
}

答案 2 :(得分:0)

所以我理解你需要读取行,直到用户没有输入否定或字母。

    Scanner sc = new Scanner(System.in);
    double x = 0;
    System.out.println("Enter price");

    while (true) {
        if (!sc.hasNextDouble()) {
            System.out.println("Sorry price cant be negative or be letter");
            break;
        }
        System.out.println("Enter price");
        x = sc.nextDouble();
    }

希望它有所帮助!