Java 解析并重新格式化电话号码

Java 解析并重新格式化电话号码,java,phone-number,Java,Phone Number,我需要写一段代码来计算用户输入的数字。如果用户输入的号码多于典型电话号码(例如,通过输入958988989),程序必须显示错误并要求用户重新输入号码。如果用户输入了正确的数字(例如,5083588745),程序应以正确的格式打印数字。我该怎么做 注意:除了可以读取单个数字的代码外,所有内容都已完成 public static void main(String[] args) { java.util.Scanner input = new java.util.Scanner(System

我需要写一段代码来计算用户输入的数字。如果用户输入的号码多于典型电话号码(例如,通过输入
958988989
),程序必须显示错误并要求用户重新输入号码。如果用户输入了正确的数字(例如,
5083588745
),程序应以正确的格式打印数字。我该怎么做

注意:除了可以读取单个数字的代码外,所有内容都已完成

public static void main(String[] args) {

    java.util.Scanner input = new java.util.Scanner(System.in);
    System.out.println("Please enter your 10 digit #.");
    long nrmNum = 1111111111;
    long phoneFmt = 0l;
    phoneFmt = (long) input.nextDouble();
    //get a 12 digits String, filling with left '0′ (on the prefix)

    java.text.DecimalFormat phoneDecimalFmt =
      new java.text.DecimalFormat("0000000000");

    String phoneRawString = phoneDecimalFmt.format(phoneFmt);

    java.text.MessageFormat phoneMsgFmt =
      new java.text.MessageFormat("({0}) - {1} - {2}");
    //suposing a grouping of 3-3-4
    String[] phoneNumArr = {
      phoneRawString.substring(0, 3),
      phoneRawString.substring(3, 6),
      phoneRawString.substring(6)
    };
    nrmNum /= 1;
    if (phoneFmt == nrmNum) {
        System.out.println("Your Phone number is:");
        System.out.println(phoneMsgFmt.format(phoneNumArr));
    } else {
        System.out.print("Please input 10 numbers for the phone#");
        System.out.println(phoneMsgFmt.format(phoneNumArr));
    }
}

你说的“过去”是什么意思?用户输入的数字是否超过10位?我不清楚这个计划的目的。要接受所有小于11位的数字吗?你真正的问题是什么?因为没有关于电话号码的国际标准,一些国家的电话号码短至6位数,而另一些国家的电话号码长至13位数。您不能准确地确定有效号码,如果用户可能包括国家代码,或国际/国家拨号(0/00)。@ USER 2180880:只需清楚:为了您的程序的目的,您认为什么是“正确的号码”?(“最多10位。”,“正好10位。”,…)数字需要正好10位