【发布时间】:2018-11-07 05:46:47
【问题描述】:
我正在用 Java 编写一个程序,它需要从用户那里获取一个数字电话号码,例如:555-GET-FOOD,然后打印所有号码,555-438-3663。
我遇到了一些问题,因为我的程序只打印一个数字,而不是全部。另外,我如何使用户可以输入破折号作为其输入的一部分,例如:555-GET-FOOD。
这是我到目前为止所做的:
import java.util.*;
public class NumberTranslator {
public static void main(String[] args) {
// Create Scanner for user input
Scanner input = new Scanner(System.in);
// Ask the user to enter the phone number
System.out.println("Please enter the Phone number in this format: (555-XXX-XXXX) ");
// Save the phone number into a string
String phoneNumber = input.nextLine();
//phoneNumber = phoneNumber.substring(0, 3) + "-" + phoneNumber.substring(3,6)+"-"+phoneNumber.substring(6,10)+"-";
phoneNumber = phoneNumber.toUpperCase();
long phoneNumberTranslated = fullPhoneNumber(phoneNumber);
System.out.println(phoneNumberTranslated);
}
public static long fullPhoneNumber(String phoneNumber) {
long number = 0;
int strLength = phoneNumber.length();
for(int i = 0; i < strLength; i++) {
char letter = phoneNumber.charAt(i);
if(Character.isLetter(letter)) {
switch(letter) {
case 'A' : case 'B' : case 'C' : number = 2; break;
case 'D' : case 'E' : case 'F' : number = 3; break;
case 'G' : case 'H' : case 'I' : number = 4; break;
case 'J' : case 'K' : case 'L' : number = 5; break;
case 'M' : case 'N' : case 'O' : number = 6; break;
case 'P' : case 'Q' : case 'R' : case 'S' : number = 7; break;
case 'T' : case 'U' : case 'V' : number = 8; break;
case 'W' : case 'X' : case 'Y' : case 'Z' : number = 9; break;
}
}
else if(Character.isDigit(letter)) {
Character.getNumericValue(letter);
}
else {
System.out.println("Invalid character!");
}
}
return number;
}
}
我得到的输出如下:
请按以下格式输入电话号码:(555-XXX-XXXX)
555getfood
3
【问题讨论】: