do{
out.println("\n---------------------------------");
out.println("---------------------------------");
out.print("Please type your acces card number: ");
try{
card = input.nextInt();
if(card.length != 10){
out.println("The number you typed is incorrect");
out.println("The number must be 10 numbers long");
continue;
}
}
catch(InputMismatchException ex){
}
}while(true);
我试图让卡片长10个字符。如(1234567890),如果用户输入(123)或(123456789098723),则应显示错误消息。 card.length似乎不起作用。
答案 0 :(得分:3)
只需将int更改为String
String card = input.next();
if(card.length() != 10){
//Do something
}
您可以在以后轻松将其转换为int
int value = Integer.parseInt(card);
答案 1 :(得分:3)
你可以改变
if(card.length != 10){
类似
if(Integer.toString(card).length() != 10){
当然,用户可以输入
0000000001
与1
相同。你可以试试
String card = input.next(); // <-- as a String
然后
if (card.length() == 10)
最后
Integer.parseInt(card)
答案 2 :(得分:0)
在Java中,您无法获得length
的{{1}}。查找位数的最简单方法是将其转换为int
。但是,您也可以进行一些数学计算以找出数字的长度。您可以找到更多信息here。
答案 3 :(得分:0)
您无法获得int
的长度。如果需要,将输入作为String
并稍后将其转换为int会更好。你可以在while循环中进行错误检查,如果你想短路,你可以让while检查显示你的错误信息:
out.println("\n---------------------------------");
out.println("---------------------------------");
out.print("Please type your access card number: ");
do {
try {
card = input.nextLine();
} catch (InputMismatchException ex) {
continue;
}
} while ( card.length() != 10 && errorMessage());
让errorMessage
函数返回true,并显示错误消息:
private boolean errorMessage()
{
out.println("The number you typed is incorrect");
out.println("The number must be 10 numbers long");
return true;
}