在Java中如何将数字转换为字母?

在Java中如何将数字转换为字母?,java,string,numbers,converters,Java,String,Numbers,Converters,我想做一个程序,将数字转换成字母,从0-9转换成ABCDEFGHIK。 例如: 当n=10时,输出为BA,因为0是A是0,B是1。 这是我的密码: String convertNumber(long n) { String result=""; String strN = Long.toString(n); for (int i=0; i < strN.length();i++){ char ch = strN.charAt(i);

我想做一个程序,将数字转换成字母,从0-9转换成ABCDEFGHIK。 例如: 当n=10时,输出为BA,因为0是A是0,B是1。 这是我的密码:

String convertNumber(long n) {
    String result="";
    String strN = Long.toString(n);
    for (int i=0; i < strN.length();i++){
        char ch = strN.charAt(i);
        switch(ch){
            case '0':
            result = "A";
            case '1':
            result = "B";
            case '2':
            result = "C";
            case '3':
            result = "D";
            case '4':
            result = "E";
            case '5':
            result = "F";
            case '6':
            result = "G";
            case '7':
            result = "H";
            case '8':
            result = "I";
            case '9':
            result = "K";
        }
    }
    return result;
}
字符串编号(长n){
字符串结果=”;
字符串strN=Long.toString(n);
对于(int i=0;i
然而,结果只返回K。我哪里做错了?谢谢大家!

您可以使用这个:

static String convertNumber(int n) {
        int reminder;
        char[] arr = "ABCDEFGHIK".toCharArray();
        int len = arr.length;
        StringBuilder builder = new StringBuilder();
        while (n != 0) {
            reminder = (int) n % 10;
            n /= 10;
            builder.append(arr[(reminder % len)]);
        }
        return builder.toString();
    }
,main

  static public void main(String[] args) {
        System.out.println(convertNumber(65));
        System.out.println(convertNumber(78));
        System.out.println(convertNumber(99));
        System.out.println(convertNumber(901));
  }
,输出

FG
IH
KK
BAK
您可以使用这个:

static String convertNumber(int n) {
        int reminder;
        char[] arr = "ABCDEFGHIK".toCharArray();
        int len = arr.length;
        StringBuilder builder = new StringBuilder();
        while (n != 0) {
            reminder = (int) n % 10;
            n /= 10;
            builder.append(arr[(reminder % len)]);
        }
        return builder.toString();
    }
,main

  static public void main(String[] args) {
        System.out.println(convertNumber(65));
        System.out.println(convertNumber(78));
        System.out.println(convertNumber(99));
        System.out.println(convertNumber(901));
  }
,输出

FG
IH
KK
BAK

您的程序中有三个错误:

  • 案例
    不使用
    中断
    ,因此每一个
    案例
    都将落在最后一个
    案例
  • 使用
    =
    而不是
    +=
  • 按与所需顺序相反的顺序使用循环。它应该是(int i=strN.length()-1;i>=0;i--)的
    ,而不是(int i=0;i
  • 以下是您的更正程序:

    public class Main {
        public static void main(String[] args) {
            System.out.println(convertNumber(10));
        }
    
        static String convertNumber(long n) {
            String result = "";
            String strN = Long.toString(n);
            for (int i = strN.length() - 1; i >= 0; i--) {
                char ch = strN.charAt(i);
                switch (ch) {
                case '0':
                    result += "A";
                    break;
                case '1':
                    result += "B";
                    break;
                case '2':
                    result += "C";
                    break;
                case '3':
                    result += "D";
                    break;
                case '4':
                    result += "E";
                    break;
                case '5':
                    result += "F";
                    break;
                case '6':
                    result += "G";
                    break;
                case '7':
                    result += "H";
                    break;
                case '8':
                    result = "I";
                    break;
                case '9':
                    result = "K";
                }
            }
            return result;
        }
    }
    
    输出:

    AB
    

    您的程序中有三个错误:

  • 案例
    不使用
    中断
    ,因此每一个
    案例
    都将落在最后一个
    案例
  • 使用
    =
    而不是
    +=
  • 按与所需顺序相反的顺序使用循环。它应该是(int i=strN.length()-1;i>=0;i--)的
    ,而不是(int i=0;i
  • 以下是您的更正程序:

    public class Main {
        public static void main(String[] args) {
            System.out.println(convertNumber(10));
        }
    
        static String convertNumber(long n) {
            String result = "";
            String strN = Long.toString(n);
            for (int i = strN.length() - 1; i >= 0; i--) {
                char ch = strN.charAt(i);
                switch (ch) {
                case '0':
                    result += "A";
                    break;
                case '1':
                    result += "B";
                    break;
                case '2':
                    result += "C";
                    break;
                case '3':
                    result += "D";
                    break;
                case '4':
                    result += "E";
                    break;
                case '5':
                    result += "F";
                    break;
                case '6':
                    result += "G";
                    break;
                case '7':
                    result += "H";
                    break;
                case '8':
                    result = "I";
                    break;
                case '9':
                    result = "K";
                }
            }
            return result;
        }
    }
    
    输出:

    AB
    

    你忘了休息。添加
    break在任何情况下,如下所示:

    案例“0”:
    结果=“A”;
    打破
    案例“1”:
    结果=“B”;
    
    中断

    你忘了休息。添加
    break在任何情况下,如下所示:

    案例“0”:
    结果=“A”;
    打破
    案例“1”:
    结果=“B”;
    

    中断

    这是否回答了您的问题?你需要在每一个案例之后打破,否则你将“失败”到下一个案例。在您的swtich中,没有中断,因此它将始终进入最后一个案例。应该
    10
    AB
    还是
    BA
    ?@sc0der哦,是的,对不起。我的错就在那里!好的,检查我的回答这个回答了你的问题吗?你需要在每一个案例之后打破,否则你将“失败”到下一个案例。在您的swtich中,没有中断,因此它将始终进入最后一个案例。应该
    10
    AB
    还是
    BA
    ?@sc0der哦,是的,对不起。我的错就在那里!好的,检查我的答案谢谢你的帮助!我会有时间检查我的代码xD Luv uYou是受欢迎的:)事实上,我只是在你的代码检查。似乎6,7,8,9的字母是错误的。因为你在帖子中提到,
    ABCDEFJIK
    中的字符我已经更新到了
    ABCDEFGHIK
    哦,这是我的错,哦,mb…谢谢你的帮助!我会有时间检查我的代码xD Luv uYou是受欢迎的:)事实上,我只是在你的代码检查。似乎6,7,8,9的字母是错误的。因为你在帖子中提到,
    ABCDEFJIK
    中的字符我已经更新到了
    ABCDEFGHIK
    哦,这是我的错,哎呀,mb……太感谢你了!天哪,太谢谢你了!