【发布时间】:2021-07-11 20:11:33
【问题描述】:
我正在尝试制作将数字转换为单词的程序,但是当我使用 charAt(0) 获取索引 0 的值时,它返回给我奇怪的值
import java.util.Scanner;
public class numToWord {
public static void main(String[] args) {
String[] digit = {"Zero","One ","Two", "Three ","Four ","Five ","Six ", "Seven ", "Eight ", "Nine" };
Scanner sc = new Scanner(System.in);
String strNum = sc.next(); //input 123
int intnum = Integer.valueOf(strNum.charAt(0));
System.out.println(intnum);
System.out.println(digit[intnum]);
//output 49
}
}
示例输入 123 输出 49
【问题讨论】:
-
到底有什么奇怪的?如果您输入字符串
"5",它由一个字符'5'组成,在大多数编码中它的代码点为53。 -
为什么它返回的代码点应该是正确的?
-
你认为
char应该包含什么?它包含一个字符的代码点(好吧,从技术上讲,它可能只是一个代理对,但这是一个例外,对于最常用的字符char= 代码点成立)。 -
在打印出“不正确”的值后,程序将因数组索引越界而崩溃,因为数字数组中没有 54 个元素。 (哦,我直到现在才查看输出的链接图片 - 是的,它按预期崩溃了)。
-
char是java中的整数类型。