【问题标题】:Loop adding letter to a tile循环将字母添加到图块
【发布时间】:2016-02-23 17:19:14
【问题描述】:

这段代码应该是向单个图块添加一个字母,但它目前的编写方式是向多个图块添加一个字母。我该如何解决?谢谢。

public void add(char c) {
        for (int row = 0; row < 4; row++){
            for (int col = 0; col < 4; col++){
                if (tiles[row][col] != null && tiles[row][col].getLetter() == null){
                    tiles[row][col].setLetter(letters.pop());
                    notifyObservers();
                    break;
                }
            }
            }
        }

【问题讨论】:

    标签: arrays if-statement for-loop multidimensional-array nested-loops


    【解决方案1】:

    break; 只退出内循环:for (int col = 0; col &lt; 4; col++)
    所以它仍然运行外循环:for (int row = 0; row &lt; 4; row++) 并因此再次重新进入内循环

    尝试用return; 替换break; 以完全退出add(char c) 函数。从而防止任何进一步的循环迭代

    public void add(char c) {
        for (int row = 0; row < 4; row++){
            for (int col = 0; col < 4; col++){
                if (tiles[row][col] != null && tiles[row][col].getLetter() == null){
                    tiles[row][col].setLetter(letters.pop());
                    notifyObservers();
                    return;
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-22
      • 2016-10-10
      • 1970-01-01
      • 2017-02-11
      • 2014-08-21
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      相关资源
      最近更新 更多