给定一个表示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