我正在尝试完成一项任务,而且我几乎完全完成了它,但我在查找最后一部分时遇到了一些麻烦。
如何:检查您收到的号码是否有五位数。如果没有通知该号码应该有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 );
}
}
谢谢
答案 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]);
}
}