电话号码细分(国际版)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 + ") ");
}

我正在运行程序只是为了看看我想如何进行其余的工作。

我有一个问题。运行后,如何移除 1 英寸和area_Code?

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

请提供任何帮助,还是新手。

目前尚不清楚为什么要将输入解析为long,我会坚持使用String输入(如果您想安全起见,也许删除所有非数字并验证它实际上是 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);
int first = (int) (phoneNumber / 10000000);
int second = (int) (phoneNumber % 10000000) / 10000;
int third = (int) (phoneNumber % 10000);
System.out.printf("(%d) %d-%d%n", first, second, third);

第一行获取前 3 位数字。

第二行得到余数,但在除以 10000 后,它只得到 3 位中间数字。

第三行得到剩下的 4 位数字。

要输出 800,您可以使用: area_Code % 1000 要输出 1,您可以使用:area_Code/1000

System.out.println(area_Code / 1000 + "(" + area_Code % 1000 + ") ");

最新更新