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我编写的绝大多数循环都<在条件中使用,而不是<=。
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 []。
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();
添加回答
举报