首页 > 解决方案 > 电话号码细分(国际版)java

问题描述

给定一个表示 11 位电话号码的长整数,使用 +1 (800) 555-1212 格式输出国家代码、区号、前缀和行号。

例如:如果输入是:18005551212

输出是:

+1 (800) 555-1212

至今,

import java.util.Scanner;

public class LabProgram {

public static void main(String[] args) {

      Scanner scnr = new Scanner(System.in);
      long phoneNumber;
      int countryCode, area_Code, prefix, line_Number;

      phoneNumber = scnr.nextLong();

      /* Type your code here. */
      line_Number = (int)(phoneNumber%10000);
      countryCode = (int)(phoneNumber%100/10);
      area_Code = (int)(phoneNumber/10000/1000);



      System.out.println("(" + area_Code + ") ");
}

我正在运行程序只是为了看看我想如何去做剩下的事情。

我有个问题。运行后,如何删除area_Code中的1?

看起来像这样(1800),我想把 1 放在括号外。

请任何帮助,仍然是新手。

标签: java

解决方案


目前尚不清楚您为什么要将输入解析为 a long,我会坚持使用Stringfor input (如果您想安全起见,可能会删除所有非数字并验证它实际上是 11 个字符长)。就像是,

String phoneNumber = scnr.nextLine().replaceAll("\\D+", "");
if (phoneNumber.length() == 11) {
    System.out.printf("+1 (%s) %s-%s%n", phoneNumber.substring(1, 4), 
            phoneNumber.substring(4, 7), phoneNumber.substring(7));
}

通过您的示例输入,我得到(按要求)

+1 (800) 555-1212

或者,

int lineNumber = (int) (phoneNumber % 10000);
int areaCode = (int) (phoneNumber / 10000 / 1000) - 1000;
int coCode = (int) (phoneNumber / 10000) - (areaCode * 1000) - 1000000;
System.out.printf("+1 (%d) %d-%d%n", areaCode, coCode, lineNumber);

或者

System.out.print("+1 (");
System.out.print(areaCode);
System.out.print(") ");
System.out.print(coCode);
System.out.print("-");
System.out.println(lineNumber);

推荐阅读