首页 > 解决方案 > 元素未添加到 ArrayList Java - Android

问题描述

很明显我不熟悉java,我遇到了变量问题,问题是我无法更改行和列的值,并且元素没有添加到代码中的ArrayList中。这就是我声明变量的方式。

// variables to be used
public int row ,col;
public char[][] board;
public ArrayList<String> converted_board;
public ArrayList<String> toUseWords;
public ArrayList<String> toUseDescription;
public ArrayList<String> inUse = new ArrayList<>();
public Random randomizer = new Random();

// Create instances of categories
private Words easyCategory = new Words(easyLetterWord, easyDescription);
private Words normalCategory = new Words(normalLetterWord, normalDescription);
private Words hardCategory = new Words(hardLetterWord, hardDescription);

这是我的问题

    // get game mode easy = 4, normal = 5, hard = 6 letters
    if (gameMode.toLowerCase() == "easy mode") {
        row = 8;
        col = 4;
        toUseWords = getToUseWords(easyCategory.getWord(), toUseWords, inUse, row);
        toUseDescription = getWordDefinitions(easyCategory.getWord(), toUseWords, easyCategory.getDesription());
    }
    else if (gameMode.toLowerCase() == "normal mode"){
        row = 6;
        col = 5;
        toUseWords = getToUseWords(normalCategory.getWord(), toUseWords, inUse, row);
        toUseDescription = getWordDefinitions(normalCategory.getWord(), toUseWords, normalCategory.getDesription());
    }
    else if (gameMode.toLowerCase() == "hard mode"){
        row = 6;
        col = 6;
        toUseWords = getToUseWords(hardCategory.getWord(), toUseWords, inUse, row);
        toUseDescription = getWordDefinitions(hardCategory.getWord(), toUseWords, hardCategory.getDesription());

    //convert 2D array to 1D array to be passed in in the adapter
    // converted_board = board_convert(board);

    // for debugging purposes
    description_display.setText(String.valueOf(row));

当我尝试在文本视图中显示 ArrayList 的行和大小时,输出为 0

标签: javaandroidvariablesarraylistscope

解决方案


我看到两件事可能是你的问题。

  1. 在 java 中比较字符串应该使用 String.equals() 方法,而不是 == 操作符。== 运算符不比较字符串的内容,而是比较对象“指针”——它们通常不一样。即您想为 3 个字符串比较执行此操作:

    if("简易模式".equals(gameMode.toLowerCase())

  2. 我在第三个 if/else 语句中没有看到右括号

我还建议设置断点并单步执行代码和/或进行一些 System.out 调用,以便您可以查看正在执行的分支,或不打印出各个点的状态以帮助您调试它。


推荐阅读