如何在java中输入长号码和输出电话号码



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

例如:如果输入为:8005551212

输出为:(800(555-1212

我被困在这里了。

这是我的代码:

package MyLabs;
import java.util.Scanner;
public class MyLabs17 {
public static void main(String[] args) {
try (Scanner scnr = new Scanner(System.in)) {
long phoneNumber;
phoneNumber = scnr.nextLong(); //user will input number here
long lineNumber = phoneNumber % 10000; //the last 4 digits of phone
long areaCode = phoneNumber / 10000000; // the first 3 digits of phone.
long prefix = areaCode % 1000;  // this is where I'm going wrong. How do I get the 3 middle numbers?

System.out.println("(" + areaCode + ")" + " " + prefix + "-" + lineNumber );
// example: when I input number 8005551212, the output I get is: (800) 800-1212!
}
}
}

我建议您在这种情况下使用字符串。这要容易得多。

try (Scanner scnr = new Scanner(System.in)) {
long input = scnr.nextLong();
String phoneNumber = Long.toString(input);
String areaCode = phoneNumber.substring(0, 3);
String prefix = phoneNumber.substring(3, phoneNumber.length() - 4);
String lineNumber = phoneNumber.substring(phoneNumber.length() - 4);
System.out.println("(" + areaCode + ")" + " " + prefix + "-" + lineNumber);
}

试试这个。

long phoneNumber = 8005551212L;
String formatted = ("" + phoneNumber).replaceAll("(...)(...)(....)", "($1) $2-$3");
System.out.println(formatted);

输出

(800) 555-1212