好的,我终于解决了这个问题,但是当我被问到输入字符串时,如果我在程序运行时输入的数字中放了任何空格,我会将这些空格变成9,那么我还有一个问题。输出,如果我不使用空格,一切运行正常,关于如何停止将9添加到我的空格的任何想法?提前致谢。

package chapter_9;

import java.util.Scanner;


public class Nine_Seven {


    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter a string: ");
        String string = input.nextLine();
        string = string.toUpperCase();

        for (int i = 0;i<string.length();i++){
            if(Character.isDigit(string.charAt(i)))
                System.out.print(string.charAt(i));
            else
                System.out.print(getNumber(string.charAt(i)));
            }
       }


     public static int getNumber(char uppercaseLetter){

        if (uppercaseLetter == 'A' || uppercaseLetter == 'B' || uppercaseLetter == 'C')
            return 2;
        else if (uppercaseLetter == 'D' || uppercaseLetter == 'E' || uppercaseLetter == 'F')
            return 3;
        else if (uppercaseLetter == 'G' || uppercaseLetter == 'H' || uppercaseLetter == 'I')
            return 4;
        else if (uppercaseLetter == 'J' || uppercaseLetter == 'K' || uppercaseLetter == 'L')
            return 5;
        else if (uppercaseLetter == 'M' || uppercaseLetter == 'N' || uppercaseLetter == 'O')
            return 6;
        else if (uppercaseLetter == 'P' || uppercaseLetter == 'Q' || uppercaseLetter == 'R' || uppercaseLetter == 'S')
            return 7;
        else if (uppercaseLetter == 'T' || uppercaseLetter == 'U' || uppercaseLetter == 'V')
            return 8;
        else
            return 9;
    }


}


输出示例:
输入字符串:597 6630

597 * 9 * 6630

最佳答案

好看看getNumber()的作用-如果它与您指定的任何情况都不匹配,则返回9。

选项:


更改它以显式返回空间的其他数字
如果值为'',则将调用代码更改为不调用getNumber()


我也建议将调用代码重构为仅调用charAt(i)一次,以保持整洁。例如,您可能想要:

for (int i = 0; i < string.length(); i++){
    char c = string.charAt(i);

    if (Character.isDigit(c) || c == ' ') {
        System.out.print(c);
    } else {
        System.out.print(getNumber(c));
    }
}


如注释中所述,getNumber()也可以用一个简单的开关/大小写:

public static int getNumber(char uppercaseLetter) {
    switch (upperCaseLetter) {
        case 'A': case 'B': case 'C':
            return 2;
        case 'D': case 'E': case 'F':
            return 3;
        case 'G': case 'H': case 'I':
            return 4;
        case 'J': case 'K': case 'L':
            return 5;
        case 'M': case 'N': case 'O':
            return 6;
        case 'P': case 'Q': case 'R': case 'S'
            return 7;
        case 'T': case 'U': case 'V':
            return 8;
        default:
            return 9;
    }
}


(显然,如果需要,您也可以垂直堆叠箱子...)

10-08 19:38