读取用户输入并忽略单词之间的空格,将字母转换为电话号码

时间:2016-06-17 08:56:21

标签: java if-statement

我一直试图通过使用character.isDigit&来弄清楚如何忽略空格/数字/字母。用户输入字符串时的character.isLetter方法..你能告诉我吗?

当我尝试使用GETLOAN输入时(没有空格)它运行良好... 但是当我进入e..g之间的空间时。获得贷款,该程序显示错误..

public static void main(String[] args) {

    String letters;
    char phoneDigit;

    Scanner kb = new Scanner(System.in);

    System.out.println("Enter letters : ");
    letters = kb.next();

    for (int i = 0; i < 7; i++) {

        phoneDigit = letters.charAt(i);

        // Using character.isDigit...
        if (Character.isDigit(phoneDigit) == true || Character.isLetter(phoneDigit) == true);
        {

            if (i == 3) {
                System.out.println("-");
            } //If 

            if (phoneDigit >= 'A' && phoneDigit <= 'C'
                    || phoneDigit >= 'a' && phoneDigit <= 'c') {

                System.out.println("2");

            } else if (phoneDigit >= 'D' && phoneDigit <= 'F'
                    || phoneDigit >= 'd' && phoneDigit <= 'f') {

                System.out.println("3");

            } else if (phoneDigit >= 'G' && phoneDigit <= 'I'
                    || phoneDigit >= 'g' && phoneDigit <= 'i') {

                System.out.println("4");

            } else if (phoneDigit >= 'J' && phoneDigit <= 'L'
                    || phoneDigit >= 'j' && phoneDigit <= 'l') {

                System.out.println("5");

            } else if (phoneDigit >= 'M' && phoneDigit <= 'O'
                    || phoneDigit >= 'm' && phoneDigit <= 'o') {

                System.out.println("6");

            } else if (phoneDigit >= 'P' && phoneDigit <= 'S'
                    || phoneDigit >= 'p' && phoneDigit <= 's') {

                System.out.println("7");

            } else if (phoneDigit >= 'T' && phoneDigit <= 'V'
                    || phoneDigit >= 't' && phoneDigit <= 'v') {

                System.out.println("8");

            } else if (phoneDigit >= 'W' && phoneDigit <= 'Z'
                    || phoneDigit >= 'W' && phoneDigit <= 'z') {

                System.out.println("9");
            } // If
        } // If
    } // For loop

} //PSVM

2 个答案:

答案 0 :(得分:0)

从此处删除分号(;)

if (Character.isDigit(phoneDigit) == true || Character.isLetter(phoneDigit) == true);//semicolon

;表示声明结束。这意味着if条件已经结束。if下的语句将始终执行,而不管if返回什么(true或false)所以{}下的其余陈述只会表现为非静态块

当我尝试使用GETLOAN输入时(没有空格)它运行良好......但是当我在e..g之间输入一个空格时。获得贷款,该程序显示错误..

当您输入空格时出现错误,因为我在上面指定的原因因为if下的语句将始终执行

答案 1 :(得分:0)

如果输入两个以空格分隔的单词,例如&#34;获得贷款&#34;,Scanner产生两个输出元素,即kb.next()的调用只返回&#34;得到&#34;。第二次调用将返回&#34;贷款&#34;。 Scanner类不适合您的目的使用。 使用像

这样的东西
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter String");
String s = br.readLine();

从控制台读取。