Java 整数打印错误值

Java 整数打印错误值,java,Java,当将整数转换为int数组时,例如123转换为{1,2,3},我得到的值是{49,50,51}。 无法找到我的代码有什么问题 public class Test { public static void main(String [] args) { String temp = Integer.toString(123); int[] newGuess = new int[temp.length()]; for (int i = 0; i &l

当将整数转换为int数组时,例如123转换为{1,2,3},我得到的值是{49,50,51}。 无法找到我的代码有什么问题

public class Test {
    public static void main(String [] args) {
        String temp = Integer.toString(123);
        int[] newGuess = new int[temp.length()];
        for (int i = 0; i < temp.length(); i++) {
            newGuess[i] = temp.charAt(i);
        }
        for (int i : newGuess) {
            System.out.println(i);
        }
    }
}
公共类测试{
公共静态void main(字符串[]args){
字符串温度=整数。toString(123);
int[]newGuess=newint[temp.length()];
对于(int i=0;i
输出:

49

五十

五十一

charAt(i)
将为您提供整数的UTF-16代码单位值。例如,在您的示例中,1的UTF-16代码单位值为49。 要获得值的整数表示形式,可以从i中减去“0”(UTF-16代码单位值48)

public class Test {
    public static void main(String [] args) {
        String temp = Integer.toString(123);
        int[] newGuess = new int[temp.length()];
        for (int i = 0; i < temp.length(); i++) {
            newGuess[i] = temp.charAt(i);
        }
        for (int i : newGuess) {
            System.out.println(i - '0');
        }
    }
}
公共类测试{
公共静态void main(字符串[]args){
字符串温度=整数。toString(123);
int[]newGuess=newint[temp.length()];
对于(int i=0;i
输出:

一,

二,

三,

charAt(i)
将为您提供整数的UTF-16代码单位值。例如,在您的示例中,1的UTF-16代码单位值为49。 要获得值的整数表示形式,可以从i中减去“0”(UTF-16代码单位值48)

public class Test {
    public static void main(String [] args) {
        String temp = Integer.toString(123);
        int[] newGuess = new int[temp.length()];
        for (int i = 0; i < temp.length(); i++) {
            newGuess[i] = temp.charAt(i);
        }
        for (int i : newGuess) {
            System.out.println(i - '0');
        }
    }
}
公共类测试{
公共静态void main(字符串[]args){
字符串温度=整数。toString(123);
int[]newGuess=newint[temp.length()];
对于(int i=0;i
输出:

一,

二,

三,

temp.charAt(i)
基本上是返回字符。您需要从中提取
整数

您可以使用:

newGuess[i] = Character.getNumericValue(temp.charAt(i));
输出

1
2
3
代码

public class Test {
    public static void main(String [] args) {
        String temp = Integer.toString(123);
        int[] newGuess = new int[temp.length()];
        for (int i = 0; i < temp.length(); i++) {
            newGuess[i] = Character.getNumericValue(temp.charAt(i));
        }
        for (int i : newGuess) {
            System.out.println(i);
        }
    }
}
公共类测试{
公共静态void main(字符串[]args){
字符串温度=整数。toString(123);
int[]newGuess=newint[temp.length()];
对于(int i=0;i
临时字符(i)
基本上是返回字符。您需要从中提取
整数

您可以使用:

newGuess[i] = Character.getNumericValue(temp.charAt(i));
输出

1
2
3
代码

public class Test {
    public static void main(String [] args) {
        String temp = Integer.toString(123);
        int[] newGuess = new int[temp.length()];
        for (int i = 0; i < temp.length(); i++) {
            newGuess[i] = Character.getNumericValue(temp.charAt(i));
        }
        for (int i : newGuess) {
            System.out.println(i);
        }
    }
}
公共类测试{
公共静态void main(字符串[]args){
字符串温度=整数。toString(123);
int[]newGuess=newint[temp.length()];
对于(int i=0;i
因为您的兴趣是获取字符串的整数值。使用parse int Integer.parseInt()方法。这将作为整数返回。 例子:
int x=整数.parseInt(“6”);它将返回整数6。

,因为您的兴趣是获取字符串的整数值。使用parse int Integer.parseInt()方法。这将作为整数返回。 例子:
int x=整数.parseInt(“6”);它将返回整数6。

要在混合中添加一些Java 8细节,使我们能够将所有内容整齐地打包,您可以选择执行以下操作:

int i = 123;
int[] nums = Arrays.stream(String.valueOf(i).split(""))
        .mapToInt(Integer::parseInt)
        .toArray();

这里,我们得到一个字符串数组的流,该数组是通过分割给定整数的字符串值创建的。然后,我们使用
integer#parseInt
将这些值映射为整数值,并将其映射到
IntStream
中,最后将其映射到数组中。

要在混合中添加一些Java 8细节,使我们能够将所有内容整齐地打包,您可以选择执行以下操作:

int i = 123;
int[] nums = Arrays.stream(String.valueOf(i).split(""))
        .mapToInt(Integer::parseInt)
        .toArray();

这里,我们得到一个字符串数组的流,该数组是通过分割给定整数的字符串值创建的。然后,我们用
integer#parseInt
将这些值映射成整数值,再映射成
IntStream
,最后将其生成一个数组。

integer.parseInt(“123”)
将返回整数
123
,而不是
{1,2,3}
整数数组。
integer.parseInt(“123”)
将返回整数
123
,而不是
{1,2,3}
int数组。的可能副本可能是迂腐的,
charAt
不返回ASCII值,而是返回
char
值,它们是UTF-16代码单位。碰巧前128个字符是相同的,覆盖了常见的拉丁字母表。但是Java从来没有使用ASCII字符串,它是Unicode从第一天就开始了。学究式的说,
charAt
不返回ASCII值,而是返回
char
值,它们是UTF-16代码单位。碰巧前128个字符都是相同的,覆盖了常见的拉丁字母表。但Java从未使用ASCII字符串,它从第一天起就是Unicode。