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();
添加回答
舉報