给数字电话号码Java的信

时间:2015-12-15 15:48:08

标签: java string loops methods char

我有以下问题:

  

今天,每个人都会想出一些聪明的短语,以便你能记住   他们的电话号码。你被赋予了解密这些的任务   短语并找出您需要拨打的号码才能联系   这些地方   说明:您输入的是一系列字母,数字和短划线。您需要确定输入序列的编号   以常规三 - 四 - 四格式表示(参见示例输出)。   您还需要确定结果编号是否有效   数字(七位数)或输入中是否有数字。
  输入:所有字母都是大写的。输入字符串最长可达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 ()
    }

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

3 个答案:

答案 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。您无需检查-QZ等无效字符。如果输出变量进入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]", "" )删除所有非数字。最后,您可以在特定位置添加短划线并检查该号码是否有效。