当取4位数代码时,如果是第一位数,则不计算0; Java的

时间:2017-10-14 00:28:28

标签: java

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.如何确保领先在这种情况下计算零?

3 个答案:

答案 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();