我在这个网站上尝试过类似的代码,但对我来说没什么用。所以我希望程序不断要求用户输入一个整数,如果它不是整数。如果信用卡是整数,则转到到期日期,如果有效,则打印发票。我试过if和while循环,也尝试捕获但我想我的逻辑被破坏了。任何帮助将不胜感激。
Scanner s = new Scanner(System.in);
System.out.println("Type 'quit' to exit payment");
System.out.println("Enter name: ");
String name = s.next();
s.nextLine();
if (name.equals("quit"))
{
return;
}
System.out.println("Enter address: ");
String address = s.nextLine();
if (address.equals("quit"))
{
return;
}
System.out.println("Type '000' to exit payment");
System.out.println("Enter card number: ");
@override
int cardNo = s.nextInt();
if (cardNo == 000)
{
return;
}
System.out.println("Enter card expiration date: (DDMMYY)");
int expirationDate = s.nextInt();
if (expirationDate == 000)
{
return;
}
//if input is ok then printing invoice
}
答案 0 :(得分:0)
每次调用方法时,请记住.nextLine()
获取下一个元素。所以最好在处理之前将它分配给变量。
来自docs
,
使此扫描程序超过当前行并返回跳过的输入。此方法返回当前行的其余部分, 排除末尾的任何行分隔符。该职位设定为 下一行的开头。 由于此方法继续搜索输入以查找行分隔符,因此它可以缓冲所有搜索的输入 如果没有行分隔符,则跳过行。
答案 1 :(得分:0)
尝试以下内容,之后我还会注意一些关于退出应用程序的事情
Scanner s = new Scanner(System.in);
String name = "", address = "";
int cardNo = 0, expirationDate = 0;
while(name == "" || address == "" || cardNo == 0 || expirationDate == 0)
{
System.out.println("Type 'quit' to exit payment");
//Get Name
System.out.print("Enter name: ");
name = s.nextLine();
if (name.equals("quit")){return;}
//Get address
System.out.print("Enter address: ");
address = s.nextLine();
if (address.equals("quit")){return;}
System.out.println("Type '-1' to exit payment");
//Get card number continually until an integer is entered
do {
System.out.print("Enter card number: ");
try {
cardNo = Integer.parseInt(s.nextLine());
break;
} catch (Exception e) {
continue;
}
} while (true);
if (cardNo == -1) {return;}
//Get card expiration date continually until an integer is entered
do {
System.out.println("Enter card expiration date: (DDMMYY)");
try {
expirationDate = Integer.parseInt(s.nextLine());
break;
} catch (Exception e) {
continue;
}
} while (true);
if (expirationDate == -1){return;}
}
您可能已经注意到我在从000
到-1
退出计划的卡号和到期日期时更改了输入内容。这是因为转换为int的000
将具有0
的值,因此用户将永远无法退出您的应用程序。