错误的输出 - 将 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 字符串转换为数组。插入数组之前数字是不是正确? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

将带有空格分隔符的字符串转换为数组。并输出这个数组,就像一个字符串

将整数转换为字符数组:java

Java将日期转换为纪元值会产生错误的输出

Java IO流--转换流的使用

无法在 Android 中将 java 字符串转换为 JSON 数组

java IO流 转换流的使用 以及编码集