如何将数字转换为 Java 中的字母?
How do I convert number to a letter in Java?
我想编写一个程序将数字转换为字母,从 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;
}
可是,结果returns只有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();
}
, 主要
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
你的程序有3处错误:
- 不将
break
与 case
一起使用,因此每个 case
都会落到最后一个 case
。
- 使用
=
代替 +=
- 以与所需顺序相反的顺序使用循环。应该是
for (int i = strN.length() - 1; i >= 0; i--)
而不是 for (int i=0; i < 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
你忘记休息了。在每种情况下添加 break;
,如下所示:
case '0':
result = "A";
break;
case '1':
result = "B";
break;
我想编写一个程序将数字转换为字母,从 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;
}
可是,结果returns只有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();
}
, 主要
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
你的程序有3处错误:
- 不将
break
与case
一起使用,因此每个case
都会落到最后一个case
。 - 使用
=
代替+=
- 以与所需顺序相反的顺序使用循环。应该是
for (int i = strN.length() - 1; i >= 0; i--)
而不是for (int i=0; i < 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
你忘记休息了。在每种情况下添加 break;
,如下所示:
case '0':
result = "A";
break;
case '1':
result = "B";
break;