整数打印错误值

时间:2016-09-14 05:13:07

标签: 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 < temp.length(); i++) {
            newGuess[i] = temp.charAt(i);
        }
        for (int i : newGuess) {
            System.out.println(i);
        }
    }
}

输出:

  

49

     

50

     

51

4 个答案:

答案 0 :(得分:4)

charAt(i)将为您提供整数的UTF-16代码单位值,例如在您的情况下,UTF-16代码单位值为1为49。 要获得值的整数表示,您可以从i中减去&#39; 0&#39;(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');
        }
    }
}

输出:

  

1

     

2

     

3

答案 1 :(得分:1)

temp.charAt(i)基本上会让你回归角色。您需要从中提取Integer值。

您可以使用:

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);
        }
    }
}

答案 2 :(得分:1)

要在混合中添加一些Java 8细节,这样我们可以整齐地打包所有内容,您可以选择:

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

这里我们得到一个通过拆分给定整数数字的字符串值而创建的字符串数组的流。然后,我们将Integer#parseInt的整数值映射到IntStream,然后最终将其转换为数组。

答案 3 :(得分:0)

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