我有以下问题:
今天,每个人都会想出一些聪明的短语,以便你能记住 他们的电话号码。你被赋予了解密这些的任务 短语并找出您需要拨打的号码才能联系 这些地方 说明:您输入的是一系列字母,数字和短划线。您需要确定输入序列的编号 以常规三 - 四 - 四格式表示(参见示例输出)。 您还需要确定结果编号是否有效 数字(七位数)或输入中是否有数字。
输入:所有字母都是大写的。输入字符串最长可达25个字符 输出:打印电话号码,如果号码不是有效号码或者 根本没有数字。
翻译密钥 ABC = 2 DEF = 3 GHI = 4 JKL = 5 MNO = 6 PRS = 7 TUV = 8 WXY = 9数字将自己并忽略所有Q,Z 和破折号。示例输入:ITS-EASY示例输出:487-3279
示例输入:--- 2 --- 3 --- TS-4示例输出:不是有效数字 示例输入:QZ --- I-M-A-TEST示例输出:462-8378示例 输入:----------示例输出:没有电话号码。
我无法将短划线和不必要的字母与翻译为电话号码的实际短语分开。到目前为止,这是我的计划:
public static void main(String[] args) {
String cleverPhrase = getCleverPhrase("Input the phrase you use to remember a specific phone number (Max 25 characters allowed): ");
checkPhrase(cleverPhrase);
}
public static String getCleverPhrase(String prompt) {
String input;
System.out.print(prompt);
input = console.nextLine();
return input;
}
public static String checkPhrase(String cleverPhrase) {
int len = cleverPhrase.length();
String output = "";
do {
for(int i = 0; i <= len; i++) {
char current = cleverPhrase.charAt(i);
if (Character.isLetter(current)) {
String newCurrent = Character.toString(current);
if (newCurrent.equals('Q') || newCurrent.equals('Z')) {
}
}
}
} while ()
}
如你所见,我还没有取得多大进展。我不知道如何让程序挑选出不必要的字母和破折号,只返回构成数字的字母。有人能帮助我吗?
答案 0 :(得分:1)
要删除字符串中不需要的字符,请查看String.replaceAll
答案 1 :(得分:1)
检查以下代码..
public static String checkPhrase(String cleverPhrase) {
int len = cleverPhrase.length();
String output = "";
for (int i = 0; i <= len; i++) {
char current = cleverPhrase.charAt(i);
if (Character.isLetter(current)) {
if (current == 'A' || current == 'B' || current == 'C') {
output += "2";
} else if (current == 'D' || current == 'E' || current == 'F') {
output += "3";
} else if (...) {
....
}
}
if(output.length()==3){
output += "-";
}
}
if(output.isEmpty()){
output = "No phone number";
}else if(output.length()!=8){
output = "Not a valid number";
}
return output;
}
您可以为所有其他数字组合扩展else-if
。您无需检查-
或Q
或Z
等无效字符。如果输出变量进入if
语句,则将对其进行编辑。
答案 2 :(得分:1)
这method will be very handy in your case。多亏了你可以替换这个
if (current == 'A' || current == 'B' || current == 'C')
...
} else if (current == 'D' || current == 'E' || current == 'F') {
...
用这个
StringUtils.replaceChars(input, "ABCDEF", "222333")
您也可以简单地通过output.replaceAll( "[^\\d]", "" )
删除所有非数字。最后,您可以在特定位置添加短划线并检查该号码是否有效。