【问题标题】:How do I convert number to a letter in Java? [duplicate]如何在 Java 中将数字转换为字母? [复制]
【发布时间】:2020-08-24 03:00:48
【问题描述】:

我想制作一个程序来将数字转换为字母,从 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;
}

但是,结果只返回 K。我哪里做错了?谢谢!

【问题讨论】:

  • 这能回答你的问题吗? How do I convert a number to a letter in Java?
  • 您需要在每个案例之后中断,否则您将“跌倒”到下一个案例。在你的 swtich 中,没有中断,所以它总是会一直到最后一个案例。
  • 应该10AB 还是BA
  • @sc0der 哦,是的,对不起。我的坏就在那里!
  • 好的,看看我的回答

标签: java string numbers converters


【解决方案1】:

你的程序有三个错误:

  1. 不使用breakcase,因此每个case 将落到最后一个case
  2. 使用= 代替+=
  3. 以与所需顺序相反的顺序使用循环。它应该是 for (int i = strN.length() - 1; i &gt;= 0; i--) 而不是 for (int i=0; i &lt; strN.length();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

【讨论】:

  • 天哪,非常感谢!
【解决方案2】:

你可以用这个:

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();
    }

,主要

  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

【讨论】:

  • 感谢您的帮助!我会有时间检查我的代码 xD Luv u
  • 不客气 :)
  • 实际上我只是检查了您的代码。好像 6,7,8,9 的字母有误。
  • 因为您在帖子中提到ABCDEFJIK中的字符我已经更新为ABCDEFGHIK
  • 哦,我错了,哎呀,mb....
【解决方案3】:

你忘记休息了。在每种情况下添加break;,如下所示:

case '0': result = "A"; break; case '1': result = "B"; break;

【讨论】:

    猜你喜欢
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2011-05-27
    • 2015-11-18
    • 1970-01-01
    相关资源
    最近更新 更多