字母到数字电话号码Java



我有以下问题:

今天,每个人都想出一些聪明的短语,让你记住他们的电话号码。你被赋予了破译这些信息的任务短语,并找出您需要拨打哪些号码才能联系这些地方
描述:您输入的将是一系列字母、数字和短划线。您需要确定输入序列的数字以规则的三点四分格式表示(参见示例输出)。您还需要确定生成的数字是否有效数字(七位数),或者输入中是否有数字
输入:所有字母均为大写。输入字符串可以长达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 ()
    }

正如你所看到的,我没有取得多大的进步。我不知道如何让程序挑出不必要的字母和破折号,只返回构成数字的字母。有人能帮我吗?

检查以下代码。。

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扩展到所有其他数字组合。您不必检查像-QZ这样的无效字符。如果输出变量进入if语句内部,它将被编辑。

这种方法在您的情况下非常方便。感谢你可以更换这个

if (current == 'A' || current == 'B' || current == 'C')
...
} else if (current == 'D' || current == 'E' || current == 'F') {
...

用这个

StringUtils.replaceChars(input, "ABCDEF", "222333")

你也可以简单地通过output.replaceAll( "[^\d]", "" )去掉所有非数字。最后,您可以在特定位置添加破折号,并检查数字是否有效。

要去掉字符串中不需要的字符,请查看string.replaceAll

最新更新