Scanner scan = new Scanner(System.in);
System.out.println("Please enter a number with 4 digits: ");
while(!scan.hasNextInt()){
//If the next int is not an integer, it will allow you to input again until an int is recieved
scan.next();
}
int n = scan.nextInt();
String strn = "" + n;
我遇到的问题是当用户输入一个零作为第一个数字的代码时,例如0481,它在字符串中保存为481.如何确保领先在这种情况下计算零?
答案 0 :(得分:0)
不要读内容。如果需要前导零,请使用字符串。
尝试以下
String strn;
do {
strn = scan.nextLine();
if (strn.matches("\\D") {
// there's a non numeric value entered, repeat loop
} else { break; }
} while (true)
答案 1 :(得分:0)
如果要保留前导零,则需要使用字符串,然后可以使用正则表达式或检查每个数字以确保该数字有效。
如果你想重新添加前导零,你最好使用String.format,就像这样
int x = 55;
String formatted = String.format("%04d", x);
这使格式化包含0055
。
你遇到问题的原因是int只保存一个数字,从值的角度来看05和5是相同的,所以int存储它们相同,并且输出为默认所需的最小位数。
答案 2 :(得分:0)
在数字int val 0044始终为44
的情况下计算前导零试试这个:
Scanner scan = new Scanner(System.in);
System.out.println("Please enter a number with 4 digits: ");
while(!scan.hasNextInt()){
//If the next int is not an integer, it will allow you to input again
until an int is recieved
scan.next();
}
String strn = scan.nextLine();