java - 如果第一个索引与字符串匹配,如何读取并返回数组的第二个索引?

标签 java string arraylist

我正在尝试使用以下参数编写翻译方法。但是,每次运行该方法时,它都会跳过第一个 if 语句并直接进入第二个 for 循环。

/** 根据wordList中的数据翻译单词,然后匹配大小写。 参数 wordList 包含翻译的映射。数据是 组织在包含长度为 2 的字符串数组的 ArrayList 中。第一个 单元格(索引 0)包含原始语言中的单词,称为键, 第二个单元格(索引 1)包含翻译。 假设wordList中的项目按升序排序 根据第一个单元格中的键。 @参数词 要翻译的词。 @参数wordList 包含翻译映射的 ArrayList。 @return wordList 中的映射,大小写与原始大小写相同。如果不 在wordList中找到match,则返回与word长度相同的Config.LINE_CHAR字符串。 */

public static String translate(String word, ArrayList<String[]> wordList) {
    String newWord = "";
    int i = 0;
    for (i = 0; i < wordList.size(); i++) {
        word = matchCase(wordList.get(i)[0], word);  //make cases match
        if (word.equals(wordList.get(i)[0])) {       //check each index at 0
            newWord = wordList.get(i)[1];            //update newWord to skip second for loop
            return wordList.get(i)[1];
        }
    }
    if (newWord == "") {
    for (i = 0; i < word.length(); i++) {
        newWord += Config.LINE_CHAR;
    }
    }

    return newWord;
}

对于我正在运行的文件,每个单词都应该有一个翻译后的单词,因此不应打印 Config.LINE_CHAR。但这是唯一打印的内容。我该如何解决这个问题。

最佳答案

您正在将 newWord 初始化为值 ""newWord 唯一可能发生更改的情况是在第一个循环中,紧接着是 return 语句,退出您的方法。到达 if 语句的唯一方法是如果您在第一个循环期间没有返回,因此如果它到达该 if 语句,则 newWord 自初始分配 以来必须保持不变” “

一些不相关的建议:比较字符串时应该使用equals运算符。例如,if ("".equals(newWord))。否则,您将比较两个 String 对象的内存地址而不是它们的值。

不过,您可能需要共享您的 matchCase 方法以确保解决所有错误。

关于java - 如果第一个索引与字符串匹配,如何读取并返回数组的第二个索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47586690/

相关文章:

java - 对象中的字符串不等于 ArrayList 中同一对象的字符串

android - 使用 ArrayList<Object> 填充 ListView

java - Eclipse:在选定的包中搜索字符串?

java - 使用 Java 和 JDBC 将无符号 64 位数字插入 BigInt MySQL 列

Java Hashtable.contains() 错误

java - 在 getString 中转换 localDate 时出错

java - 从另一个对象列表创建对象元素的列表

java - Struts 2 中的 HttpServletRequest 和静态方法线程安全

java - 打印特定字符

c - 替换 C 中的子字符串