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();
我试图基本上验证上面的代码,以便用户不能输入负数或字母或空双打,但它不起作用,我无法看到我出错的地方。有人可以帮助我吗?
答案 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();
}
希望它有所帮助!