如何用java格式化转换后的电话号码?
我的程序只将字母数字电话号码转换为数字。例如1-800-FLOWERS到18003569377。但是,我正在尝试格式化输出以显示1-800-356-9377 以下是我目前的代码:如何用java格式化转换后的电话号码?,java,string,formatting,switch-statement,phone-number,Java,String,Formatting,Switch Statement,Phone Number,我的程序只将字母数字电话号码转换为数字。例如1-800-FLOWERS到18003569377。但是,我正在尝试格式化输出以显示1-800-356-9377 以下是我目前的代码: public static void main(String[] args) { System.out.println ("Enter phone number:"); Scanner scanInput = new Scanner (System.in); String initialPho
public static void main(String[] args)
{
System.out.println ("Enter phone number:");
Scanner scanInput = new Scanner (System.in);
String initialPhoneNumber;
initialPhoneNumber = scanInput.nextLine ();
initialPhoneNumber = initialPhoneNumber.toUpperCase();
long convertedPhoneNumber = phoneNumber (initialPhoneNumber);
System.out.println ("Converted: " + convertedPhoneNumber);
}
public static long phoneNumber (String initialPhoneNumber)
{
long number = 0;
int stringLength = initialPhoneNumber.length();
for (int digitNum = 0 ; digitNum < stringLength ; digitNum++ )
{
char ch = initialPhoneNumber.charAt(digitNum);
if (Character.isLetter(ch))
{
switch(ch)
{
case 'A' : case 'B' : case 'C' : number *= 10; number += 2; break;
case 'D' : case 'E' : case 'F' : number *= 10; number += 3; break;
case 'G' : case 'H' : case 'I' : number *= 10; number += 4; break;
case 'J' : case 'K' : case 'L' : number *= 10; number += 5; break;
case 'M' : case 'N' : case 'O' : number *= 10; number += 6; break;
case 'P' : case 'Q' : case 'R' : case 'S' : number *= 10; number += 7; break;
case 'T' : case 'U' : case 'V' : number *= 10; number += 8; break;
case 'W' : case 'X' : case 'Y' : case 'Z' : number *= 10; number += 9; break;
}
}
else if (Character.isDigit(ch))
{
number *= 10; number += Character.getNumericValue(ch);
}
}
return number;
}
publicstaticvoidmain(字符串[]args)
{
System.out.println(“输入电话号码:”);
扫描仪扫描输入=新扫描仪(System.in);
字符串initialPhoneNumber;
initialPhoneNumber=scanInput.nextLine();
initialPhoneNumber=initialPhoneNumber.toUpperCase();
long convertedPhoneNumber=电话号码(initialPhoneNumber);
System.out.println(“转换:”+转换电话号码);
}
公共静态长phoneNumber(字符串initialPhoneNumber)
{
长数=0;
int stringLength=initialPhoneNumber.length();
对于(int-digitNum=0;digitNum
任何帮助都将不胜感激 您可以使用
StringBuilder sb = new StringBuilder(
String.valueOf(convertedPhoneNumber));
sb.insert(7, '-');
sb.insert(4, '-');
sb.insert(1, '-');
System.out.println("Converted: " + sb);
可能最好将电话号码存储为字符串,但如果将其存储为整数,则可以按以下步骤进行操作。您可以使用/10或/100或/1000将数字放到右侧。。。(整数除法)。您可以在左边用%10或%100或%1000删除数字。。。(余数/模数)。这些操作的某些组合将隔离所需的数字。有字符串的标准格式方法。在本例中,我使用子字符串并将其格式化为%s-%s-%s-% %s-显示子字符串,第一个%s是第一个子字符串,第二个%s是第二个子字符串,依此类推
String number = "18003569377";
String formattedNumber = String.format("%s-%s-%s-%s", number.substring(0, 1), number.substring(1, 4), number.substring(4, 7),number.substring(7, 11));
有关String.format的详细信息,请阅读以下链接:
在主要方法中添加以下内容将解决您的问题
long subString = (convertedPhoneNumber%10000000);
String updatedStringPhone = initialPhoneNumber.substring(0,6)+subString/10000+"-"+subString%10000;
总体方法为:
public static void main(String[] args)
{
System.out.println ("Enter phone number:");
Scanner scanInput = new Scanner (System.in);
String initialPhoneNumber;
initialPhoneNumber = scanInput.nextLine ();
initialPhoneNumber = initialPhoneNumber.toUpperCase();
long convertedPhoneNumber = phoneNumber (initialPhoneNumber);
long subString = (convertedPhoneNumber%10000000);
String updatedStringPhone = initialPhoneNumber.substring(0,6)+subString/10000+"-"+subString%10000;
System.out.println("Updated: "+updatedStringPhone);
System.out.println ("Converted: " + convertedPhoneNumber);
}
说明:
转换为字符串并添加以下字符串。例如“1-800-”
“356”
“-”
“9377”您能用几句话解释一下您的解决方案吗?这样的答案总是更有力。我认为这是一个非常简单的问题,答案非常简单,不需要额外的解释,但结果证明我错了。字符串有标准格式方法。在本例中,我使用了子字符串并将其格式化为%s-%s-%s-%s-显示子字符串,第一个%s是第一个子字符串,第二个%s是第二个子字符串等等。我编辑了我的答案并添加了链接以获取更多详细信息。根据经验,一定要解释答案。这对你来说可能是显而易见的,但对这个领域的新手来说可能不是。