首页 > 解决方案 > charAt() 返回奇怪的值

问题描述

我正在尝试制作将数字转换为单词的程序,但是当我使用 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

输入输出:

标签: javacharat

解决方案


您当前正在读取输入的第一个字符的 ascii 值。此外,您的数字映射中有空格。您想要做的是解析每个数字并获取映射。就像是,

String[] digit = { "Zero", "One", "Two", "Three", "Four", 
        "Five", "Six", "Seven", "Eight", "Nine" };
Scanner sc  = new Scanner(System.in);
String strNum = sc.next();
for (int i = 0; i < strNum.length(); i++) {
    if (i != 0) {
        System.out.print(" ");
    }
    int v = Character.digit(strNum.charAt(i), 10); // strNum.charAt(i) - '0'
    System.out.print(digit[v]);
}
System.out.println();

推荐阅读