Java DO WHILE循环与电话号码



我创建了一个简单的程序,询问用户电话号码的最后7位数字。我使用了一个do-while循环,但我意识到,如果用户键入一个以"0"开头的数字,程序将不会将其算作第一个数字。我该怎么办?这就是我目前所拥有的:

import java.util.Scanner;
public class PhoneCode {
static Scanner keyboard = new Scanner(System.in);


public static void main(String[] args) {
int phoneNum;
do {
System.out.print("Please enter your 305 phone number: ");
phoneNum = keyboard.nextInt();
} while (phoneNum <= 1000000 || phoneNum >= 9999999);
System.out.print(phoneNum);
}
}

0不算作第一位的原因是Java将任何以0开头的数字截断到第一个非零位,而在您的代码中,任何以0开始的七位数字都将截断到第一位非零位(长度小于7位(。例如,数字00001被解析为1,因为它们都表示相同的值。无论如何,可以考虑使用String来存储数字,因为您可以保留前导零并轻松检查正确的长度。此外,考虑在do-while循环中使用一个true值,并在输入正确值时中断循环。

Scanner keyboard = new Scanner(System.in);
do {
System.out.print("Enter the last 7 digits of your phone number: ");
String phoneNumber = keyboard.nextLine();
if (phoneNumber.length() == 7) {
System.out.println("Your phone number is: " + phoneNumber);
break;
} else {
System.out.println("Invalid phone number. Please try again.");
}
} while (true);

最新更新