Java 从文本到数字

Java 从文本到数字,java,Java,在您的手机键盘和旧键盘上,字母表映射到如下数字:ABC(2)、DEF(3)、GHI(4)、JKL(5)、MNO(6)、PQRS(7)、TUV(8)、WXYZ(9)。 编写一个程序,提示用户输入字符串(不区分大小写),并将其转换为键盘数字序列 public static void main(String[] args) { Scanner scan = new Scanner(System.in); String str = scan.next().toLowerCase();

在您的手机键盘和旧键盘上,字母表映射到如下数字:ABC(2)、DEF(3)、GHI(4)、JKL(5)、MNO(6)、PQRS(7)、TUV(8)、WXYZ(9)。 编写一个程序,提示用户输入字符串(不区分大小写),并将其转换为键盘数字序列

public static void main(String[] args) 
{
    Scanner scan = new Scanner(System.in);

    String str = scan.next().toLowerCase();

    for(int i = 0; i <= (str.length()-1); i++)
    {
        if(str.charAt(i) == 'A')
            System.out.print("2");
        else if(str.charAt(i) == 'B')
            System.out.print("22");
        else if(str.charAt(i) == 'C')
            System.out.print("222");
        else if(str.charAt(i) == 'D')
            System.out.print("3");
        else if(str.charAt(i) == 'E')
            System.out.print("33");
        else if(str.charAt(i) == 'F')
            System.out.print("333");
        else if(str.charAt(i) == 'G')
            System.out.print("4");
        else if(str.charAt(i) == 'H')
            System.out.print("44");
        else if(str.charAt(i) == 'I')
            System.out.print("444");
        else if(str.charAt(i) == 'J')
            System.out.print("5");
        else if(str.charAt(i) == 'K')
            System.out.print("55");
        else if(str.charAt(i) == 'L')
            System.out.print("555");
        else if(str.charAt(i) == 'M')
            System.out.print("6");
        else if(str.charAt(i) == 'N')
            System.out.print("66");
        else if(str.charAt(i) == 'O')
            System.out.print("666");
        else if(str.charAt(i) == 'P')
            System.out.print("7");
        else if(str.charAt(i) == 'Q')
            System.out.print("77");
        else if(str.charAt(i) == 'R')
            System.out.print("777");
        else if(str.charAt(i) == 'S')
            System.out.print("7777");
        else if(str.charAt(i) == 'T')
            System.out.print("8");
        else if(str.charAt(i) == 'U')
            System.out.print("88");
        else if(str.charAt(i) == 'V')
            System.out.print("888");
        else if(str.charAt(i) == 'W')
            System.out.print("9");
        else if(str.charAt(i) == 'X')
            System.out.print("99");
        else if(str.charAt(i) == 'Y')
            System.out.print("999");
        else if(str.charAt(i) == 'Z')
            System.out.print("9999");
    }
}
publicstaticvoidmain(字符串[]args)
{
扫描仪扫描=新扫描仪(System.in);
String str=scan.next().toLowerCase();
对于(inti=0;i,这是你的罪魁祸首:

String str = scan.next().toLowerCase();
将其更改为:

String str = scan.next().toUpperCase();
这是你的罪魁祸首:

String str = scan.next().toLowerCase();
将其更改为:

String str = scan.next().toUpperCase();
  • 您需要修复以下代码:

    String str = scan.next().toLowerCase();
    
  • 致:

  • 如果你不想用很多的If-then,你可以用这个:

    private int takeResult(char c){
    int toInt = (int) c;
    if(c < 'A' && c > 'Z') throw new IllegalArgumentException();
    if (c == 'S') return 7777;
    if (c == 'Z') return 9999;
    int magic = toInt % 3;
    if (c > 'S') return (((toInt / 3) - 20) * (45 * magic * magic - 35 * magic + 1));
    return ((toInt / 3) - (((-1) * magic * magic + magic + 40) / 2)) * ((-105) * magic * magic + 205 * magic + 11);
    }
    
    private int takeResult(字符c){
    int-toInt=(int)c;
    如果(c<'A'和&c>'Z')抛出新的IllegalArgumentException();
    如果(c='S')返回7777;
    如果(c='Z')返回9999;
    int magic=toInt%3;
    如果(c>'S')返回(((toInt/3)-20)*(45*magic*magic-35*magic+1));
    返回((toInt/3)-((-1)*魔法*魔法+魔法+40)/2)*(-105)*魔法*魔法+205*魔法+11);
    }
    
  • 虽然它更复杂但更“有趣”:.GLHF

  • 您需要修复以下代码:

    String str = scan.next().toLowerCase();
    
  • 致:

  • 如果你不想用很多的If-then,你可以用这个:

    private int takeResult(char c){
    int toInt = (int) c;
    if(c < 'A' && c > 'Z') throw new IllegalArgumentException();
    if (c == 'S') return 7777;
    if (c == 'Z') return 9999;
    int magic = toInt % 3;
    if (c > 'S') return (((toInt / 3) - 20) * (45 * magic * magic - 35 * magic + 1));
    return ((toInt / 3) - (((-1) * magic * magic + magic + 40) / 2)) * ((-105) * magic * magic + 205 * magic + 11);
    }
    
    private int takeResult(字符c){
    int-toInt=(int)c;
    如果(c<'A'和&c>'Z')抛出新的IllegalArgumentException();
    如果(c='S')返回7777;
    如果(c='Z')返回9999;
    int magic=toInt%3;
    如果(c>'S')返回(((toInt/3)-20)*(45*magic*magic-35*magic+1));
    返回((toInt/3)-((-1)*魔法*魔法+魔法+40)/2)*(-105)*魔法*魔法+205*魔法+11);
    }
    

  • 虽然它更复杂,但更“有趣”:.GLHF!!

    还有,我在这里使用了嵌套if。有没有办法使这段代码更短?还有,我在这里使用了嵌套if。有没有办法使这段代码更短?我甚至会将其更改为
    toUpperCase(Locale.ROOT)
    以防万一(请参阅)非常感谢!:)但为什么它不适用于小写?因为您的if语句正在检查大写字符。我甚至会将它更改为
    toUpperCase(Locale.ROOT)
    以防万一(请参阅)非常感谢!:)但为什么它不适用于小写?因为您的if语句正在检查大写字符。