为了账号安全,请及时绑定邮箱和手机立即绑定

将整数转换为数字数组

将整数转换为数字数组

慕姐4208626 2019-11-29 09:44:51
我尝试将整数转换为数组,例如1234到 int[] arr = {1,2,3,4};我写了一个函数public static void convertInt2Array(int guess)  {    String temp = Integer.toString(guess);    String temp2;    int temp3;    int [] newGuess = new int[temp.length()];    for(int i=0;i<=temp.length();i++) {        if (i!=temp.length()) {            temp2 = temp.substring(i, i+1);        } else {            temp2 = temp.substring(i);            //System.out.println(i);        }        temp3 =  Integer.parseInt(temp2);            newGuess[i] = temp3;    }            for(int i=0;i<=newGuess.length;i++) {                System.out.println(newGuess[i]);            }          }但是抛出一个异常:Exception in thread "main" java.lang.NumberFormatException: For input string: ""    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)    at java.lang.Integer.parseInt(Integer.java:504)    at java.lang.Integer.parseInt(Integer.java:527)    at q4.test.convertInt2Array(test.java:28)    at q4.test.main(test.java:14)Java Result: 1有什么想法吗?
查看完整描述

3 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

眼前的问题是由于您使用<= temp.length()而不是< temp.length()。但是,您可以更简单地实现此目的。即使您使用字符串方法,也可以使用:


String temp = Integer.toString(guess);

int[] newGuess = new int[temp.length()];

for (int i = 0; i < temp.length(); i++)

{

    newGuess[i] = temp.charAt(i) - '0';

}

< newGuess.length()在打印内容时也需要进行相同的更改以使用-否则,对于长度为4的数组(其有效索引为0、1、2、3),您将尝试使用newGuess[4]。for我编写的绝大多数循环都<在条件中使用,而不是<=。


查看完整回答
反对 回复 2019-11-29
?
Qyouu

TA贡献1786条经验 获得超11个赞

您不需要转换int为String,只需使用% 10来获取最后一位,然后将int除以10即可得到下一位。


int temp = test;

ArrayList<Integer> array = new ArrayList<Integer>();

do{

    array.add(temp % 10);

    temp /= 10;

} while  (temp > 0);

这将使您留下包含相反顺序数字的ArrayList。您可以根据需要轻松还原它,并将其转换为int []。


查看完整回答
反对 回复 2019-11-29
?
皈依舞

TA贡献1851条经验 获得超3个赞

public static void main(String[] args)

{

    int num = 1234567;  

    int[]digits = Integer.toString(num).chars().map(c -> c-'0').toArray();  

    for(int d : digits)

        System.out.print(d);    

}

主要思想是


将int转换为其String值

Integer.toString(num);

获取一个int流,它表示组成我们整数的String版本的每个char(〜digit)的ASCII值

Integer.toString(num).chars();

将每个字符的ascii值转换为其值。要获取char的实际int值,我们必须从实际char的ASCII码中减去char'0'的ASCII码值。要获得我们数字的所有数字,必须对组成与我们数字相等的字符串的每个字符(对应于数字)应用此操作,这是通过将下面的map函数应用于我们的IntStream来完成的。

Integer.toString(num).chars().map(c -> c-'0');

使用toArray()将int流转换为int数组

Integer.toString(num).chars().map(c -> c-'0').toArray();


查看完整回答
反对 回复 2019-11-29
  • 3 回答
  • 0 关注
  • 994 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信