第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

更新 ArrayList

更新 ArrayList

DIEA 2024-01-05 10:44:59
每當(dāng)玩家輸入數(shù)字時,我都會嘗試更新我的棋盤(由數(shù)組列表中的三個數(shù)組列表組成)。該數(shù)字與棋盤上的一個正方形的對應(yīng)關(guān)系如下:1 2 34 5 67 8 9我在更新網(wǎng)格時遇到問題。功能public static void playBoard(int choice, ArrayList<ArrayList<String>> board, boolean playerTurn) {    String val;    if (!playerTurn) {        val = "| X |";    }    else {        val = "| O |";    }    if (choice>=1 && choice<=3) {        System.out.println("H");        ArrayList<String> updateRow = board.get(0);        if (choice ==3) {            val+="\n";        }        updateRow.set(choice-1, val);        System.out.println(updateRow);        board.set(0, updateRow);        System.out.println(display(board));    }    else if (choice>=4 && choice<=6) {        System.out.println("H");        ArrayList<String> updateRow = board.get(1);        if (choice ==6) {            val+="\n";        }        updateRow.set((choice-4), val);        board.set(1, updateRow);        System.out.println(display(board));    }    else if (choice>=7 && choice<=9) {        System.out.println("H");        ArrayList<String> updateRow = board.get(2);        if (choice ==9) {            val+="\n";        }        updateRow.set(choice-7, val);        board.set(2, updateRow);        System.out.println(display(board));    }    else {        System.out.println("Input out of range");        return;    }}問題在于,當(dāng)用戶輸入一個值時,該值對應(yīng)的整個列都會更新,而不是單個方塊。我已經(jīng)檢查過:只有一個 if 語句被觸發(fā)。更新僅發(fā)生一次更新發(fā)生在正確的索引上。通過我的調(diào)試,我認(rèn)為問題所在是:updateRow.set(choice-1, val);當(dāng)用戶(玩家1)輸入1時:預(yù)期輸出| X || - || - | | - || - || - | | - || - || - |實際產(chǎn)量| X || - || - | | X || - || - | | X || - || - |顯示功能抱歉,我沒有意識到你們需要看到這個其他功能
查看完整描述

2 回答

?
繁花不似錦

TA貢獻1851條經(jīng)驗 獲得超4個贊

問題似乎出現(xiàn)在創(chuàng)建中:您可能為每一行使用相同的列 ArrayList 對象。


// Error:

ArrayList<String> row = new ArrrayList<>();

row.add("...");

row.add("...");

row.add("...");

for (int i = 0; i < 3; ++i) {

    board.add(row);

}

本來應(yīng)該:


for (int i = 0; i < 3; ++i) {

    ArrayList<String> row = new ArrrayList<>();

    row.add("...");

    row.add("...");

    row.add("...");

    board.add(row);

}

同樣的概念錯誤意味著:不需要這樣做:

board.set(2, updateRow); // Not needed.

更改板持有的 updateRow 對象中的條目是通過引用完成的。

一些技巧:

  • 這里可以使用String[][].

  • 將顯示/視圖(字符串)與數(shù)據(jù)模型(字符?)分開更容易,所以也許char[][] board = new char[3][3];


查看完整回答
反對 回復(fù) 2024-01-05
?
侃侃無極

TA貢獻2051條經(jīng)驗 獲得超10個贊

我已經(jīng)使用了您的代碼并添加了顯示功能,它給了我預(yù)期的輸出。我想您可能需要檢查顯示功能或創(chuàng)建板的方式。下面是我使用的顯示功能


 public static String display(ArrayList<ArrayList<String>> board) {

     String output = "";

     for(ArrayList<String> list : board) {

         for(String s:list){

             output += s ;

         }

         output += "\n";

     }

     return output;


 }


查看完整回答
反對 回復(fù) 2024-01-05
  • 2 回答
  • 0 關(guān)注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號