开发者社区 问答 正文

使用字符检查二维数组中的某些单词

我目前正在编写一个程序,要求我输入与下面类似的输入。6 6 devolg redphk qchzjc poaafo vammnl qtfoxb前两个整数表示行和列,然后其余的表示要放入方法中的实际字符。我已经成功创建了一个创建并读取数组的方法。该程序是一个单词搜索难题求解器。它需要几种方法,但是我需要关注的是“ checkUp”方法和checkDown左右键...到目前为止,这是我针对该方法的代码。

public static boolean checkUp(char [][] puzzle, String word, int row, int col) {
        System.out.println("Row: " + row +  " Col: " + col + " Word: " + word.charAt(0) + " CurLet: " + puzzle[row][col] + " Word length: " + word.length());
        if (row==0) {
            return false;
        } else if (word.length()==1) {
            return true;
        } else if (word.charAt(0) == puzzle[row][col]){
            checkUp(puzzle,word.substring(1),row-1,col);            
        }
        return false;
    }

有些限制,我必须逐个读取Char中的数组及其所有内容,但无法将其转换为字符串。如果它们匹配,则在此特定示例中,我只需将行计数向下移动1即可向上移动。有谁对如何解决这个问题有更好的主意吗?在这一点上,我完全迷住了,实际上迷路了。到目前为止,我的朋友帮助我写了这篇文章,但我确实无法确切了解他到底想做什么。

展开
收起
垚tutu 2019-12-12 09:45:11 596 分享 版权
阿里云 AI 助理回答

你的checkUp方法设计用于在给定的字符矩阵(单词搜索谜题)中向上检查是否能找到指定单词。从你提供的代码来看,有几个问题需要解决和优化:

  1. 打印语句中的语法错误:在打印语句中,你需要使用逗号来分隔变量和字符串,而不是直接相连。例如,应改为 System.out.println("Row: " + row + " Col: " + col + ...)

  2. 递归逻辑不完整:当前的递归调用缺少返回值处理。即使在内部递归调用中找到了匹配,外部调用并不知道这一结果。你需要根据递归调用的结果返回true或false。

  3. 初始行判断可能导致遗漏正确答案:当row==0时直接返回false可能过早结束搜索,因为单词的第一个字母可能不在第一行但后续字母可能在上方。这个判断应该放在循环外,并且在开始搜索前进行。

  4. 未处理列变化:由于是向上搜索,列数col保持不变是正确的,但其他方向的方法(如checkDown, checkLeft, checkRight)需要相应调整列或行的值。

修正后的checkUp方法示例:

public static boolean checkUp(char [][] puzzle, String word, int row, int col) {
    // 初始条件检查,如果已经超出了矩阵范围或者没有更多字符需要匹配,则返回false
    if (row < 0 || word.isEmpty()) {
        return false;
    }
    
    // 检查当前字符是否匹配
    if (word.charAt(0) == puzzle[row][col]) {
        // 如果是最后一个字符,说明整个单词匹配成功
        if (word.length() == 1) {
            return true;
        }
        // 继续向上一行搜索剩余的单词部分
        return checkUp(puzzle, word.substring(1), row - 1, col);
    } else {
        // 当前字符不匹配,直接返回false
        return false;
    }
}

请确保在调用此方法之前,先检查输入的行和列是否在矩阵的有效范围内,以避免数组越界异常。对于其他方向的搜索方法(checkDown, checkLeft, checkRight),你可以基于这个模板进行相应的调整。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答地址: