错误的输出 - 将 Java 字符串转换为数组。插入数组之前数字是不是正确? [复制]
Posted
技术标签:
【中文标题】错误的输出 - 将 Java 字符串转换为数组。插入数组之前数字是不是正确? [复制]【英文标题】:Wrong output- Converting Java String to Array. Numbers are correct before inserting into array? [duplicate]错误的输出 - 将 Java 字符串转换为数组。插入数组之前数字是否正确? [复制] 【发布时间】:2020-10-22 08:08:28 【问题描述】:我有这个问题,我需要创建一个接收字符串并创建每个字符的整数数组的方法。我检查了for循环的每一步以及循环前后的数组,我迷路了。
它正确地将每个字符显示为 '3' '4' 和 '5',但是一旦将其插入数组中,它总是会打印 [51, 52, 53]。我很迷茫这些数字是从哪里来的?非常感谢...
public class CodingBat
public static void main(String[] args)
String text = "345";
int[] create = new int[text.length()];
for(int i = 0; i < text.length(); i++)
System.out.printf("Current array: %s\n", Arrays.toString(create));
//System.out.println(text.charAt(i));
create[i] = text.charAt(i);
System.out.printf("Adding %c\n", text.charAt(i));
System.out.println(Arrays.toString(create));
【问题讨论】:
char
是 16 位类型,它在 Unicode 表中存储代表 index 字符的数字,这就是您所看到的。如果您想获得与数字对应的int
,您可以获取该数字的索引并减去'0'
字符的索引(类似于create[i] = text.charAt(i) - '0';
)。现在那个副本在哪里......
这些数字是这些字符的 ascii 表示。您可以减去字符“0”的值以获得数字值。
【参考方案1】:
如果我记得的话,你正在将一个 char 插入一个 int 数组,你看到的打印数组的数字是 ASCII 码。
所以,如果你想得到号码,请使用:
create[i] = Character.getNumericValue(text.charAt(i))
【讨论】:
感谢大家,所有的答案都解决了!以上是关于错误的输出 - 将 Java 字符串转换为数组。插入数组之前数字是不是正确? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
将带有空格分隔符的字符串转换为数组。并输出这个数组,就像一个字符串