好的,我一直在撰寫代碼以獲取雙字符陣列并將其轉換為雙陣列串列,到目前為止我一直在使用兩個 for 回圈來實作這一點,將雙陣列中每個陣列的字符添加到一個陣列串列,然后將其添加回雙陣列串列。以下是我的轉換器的代碼:
public static ArrayList<ArrayList<Character>> CharAToAL(char[][] chars){
ArrayList<ArrayList<Character>> c = new ArrayList<>();
ArrayList<Character> b = new ArrayList<>();
for(int i=0; i < chars.length; i ){
b.clear();
for (int k=0; k < chars[i].length; k ){
b.add(Character.valueOf(chars[i][k]));
//this part of code prints out the correct letters
Debug.printLn(String.valueOf(chars[i][k]));
}
c.add(b);
}
return c;
}
我正在使用以下代碼對其進行測驗:
//static obj outside of main
static char[][] gamemenu = {
{'0','1','0','0','0','0','0','0','0','0'},
{'0','0','0','0','0','0','0','0','0','0'},
{'0','0','0','0','@','0','0','0','0','0'},
{'0','0','0','0','0','0','0','0','0','0'},
{'0','0','0','0','0','0','0','0','0','0'}
};
//inside of main
ArrayList<ArrayList<Character>> e = Utility.CharAToAL(gamemenu);
Debug.PrintDoubleArray(gamemenu);
Debug.printLn("\n-------");
Debug.PrintDoubleArray(e);
Debug.printLn("\n-------");
Debug.printLn(String.valueOf(e.get(0).get(1)));
除錯只是一個幫助列印值的小腳本。我希望看到的是游戲選單,但是,如下圖所示,它只列印零,上面是破折號,下面是輸出。
列印輸出的圖片
我認為這可能是由清除 b 引起的,但不這樣做會導致同樣的事情一遍又一遍地重復。先感謝您!:>
uj5u.com熱心網友回復:
b 不需要在回圈外宣告
for(int i=0; i < chars.length; i ){
ArrayList<Character> b = new ArrayList<>();
for (int k=0; k < chars[i].length; k ){
Character ch = Character.valueOf(chars[i][k]);
b.add(ch);
//this part of code prints out the correct letters
System.out.println(ch);
}
c.add(b);
}
當您這樣做時,clear它會從串列中洗掉所有內容,并且由于您沒有創建新串列,因此之前添加的值也會丟失。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/382272.html
