java - 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
解决方案
您当前正在读取输入的第一个字符的 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();
推荐阅读
- python-3.x - 使用 pandas udf 创建 Pyspark 文件
- c++ - 启动 move_base 节点时已废弃 map_server 警告
- javascript - context.drawImage 间歇性失败
- c++ - 使用堆栈测试用户输入的字符串是否是回文
- ffmpeg - FFmpeg:如何在音频文件中间多次降低音量几秒钟?
- sql - COUNT(DISTINCT x || y) 是什么意思?
- drupal - 本地的drupal 6站点设置重定向到生产站点
- powerbi - 市场发布失败 - 1100.7.3 重复报价?
- c# - 密码加密大写字母c#的问题
- javascript - 直接到页面和启动功能