检查Java程序和数字中的位数。如果不是5位数则终止?

时间:2016-10-10 23:34:33

标签: java

我正在尝试完成一项任务,而且我几乎完全完成了它,但我在查找最后一部分时遇到了一些麻烦。

如何:检查您收到的号码是否有五位数。如果没有通知该号码应该有5位数,则优雅地终止。

我尝试了一些东西,但我无法正确检查。

这是我的代码:

import java.util.Scanner;

public class Five
{
  public static void main( String args[] )
{
    Scanner input = new Scanner( System.in );

    int number;
    int digit1;
    int digit2;
    int digit3;
    int digit4;
    int digit5;

    System.out.print( "Enter a five digit integer: " );
    number = input.nextInt();

    digit1 = number / 10000;
    digit2 = number % 10000 / 1000;
    digit3 = number % 10000 % 1000 / 100;
    digit4 = number % 10000 % 1000 % 100 / 10;
    digit5 = number % 10000 % 1000 % 100 % 10;

    System.out.printf( "Digits in %d are %d %d %d %d %d/n",
        number, digit1, digit2, digit3, digit4, digit5 );

   }
}

谢谢

2 个答案:

答案 0 :(得分:1)

您可以通过简单检查用户输入来确保输入有效

//take the user input as a string first
String userInput = input.next();
//then check the 
if(userInput.length() == 5 && userInput.matches("\\d\\d\\d\\d\\d"))
{
    number = Integer.parseInt(userInput);
    digit1 = number / 10000;
    digit2 = number % 10000 / 1000;
    digit3 = number % 10000 % 1000 / 100;
    digit4 = number % 10000 % 1000 % 100 / 10;
    digit5 = number % 10000 % 1000 % 100 % 10;

    System.out.printf( "Digits in %d are %d %d %d %d %d/n",
    number, digit1, digit2, digit3, digit4, digit5 );
}
else
{
     System.out.println(userInput + " is not a valid 5 digit number");
}

答案 1 :(得分:0)

无论如何,请保留当前的代码并仅提交您编写的内容,并且感觉很舒服。

使用正则表达式

我不知道你是否知道正则表达式,或者你是否被允许使用它们。你可以这样做:

String userInput = input.next().trim();

if (userInput.matches("\\d{5}")) {
    String[] split = userInput.split("(?<=[0-9])");

    System.out.printf("Digits in %s are", userInput);
    for (int i = 0; i < split.length; i++) {
        System.out.printf(" %s", split[i]);
    }
}

使用前导零输入

我唯一不确定你的要求的是领导零(也许你需要考虑自己的解决方案)。

  • 01234输入有效的5位数吗?

忽略前导

如果要忽略前导零,则读取int并将其转换为String将删除前导零。

Scanner input = new Scanner(System.in);
int number = input.nextInt();
String userInput = String.valueOf(number);
if (userInput.length() == 5) {
    String[] split = userInput.split("(?<=[0-9])");

    System.out.printf("Digits in %s are", userInput);
    for (int i = 0; i < split.length; i++) {
        System.out.printf(" %s", split[i]);
    }
}