【问题标题】:ArrayList is not being populatedArrayList 没有被填充
【发布时间】:2016-04-16 05:57:22
【问题描述】:

我有点 Java 菜鸟,所以任何帮助表示赞赏。我有一个方法应该采用 char 值和按字母顺序排列的单词 Arraylist,并返回列表中以与 char 相同的字母开头的所有字符串。我没有收到任何错误消息,但我的方法不断返回一个空的 ArrayList。为什么我的列表没有被填写?

 public String singlePhrase(char c, ArrayList<String> wordList){

  ArrayList<String> words = new ArrayList<String>();      
  for (int i = 0; i < wordList.size(); i++) { 
     if (wordList.get(i).charAt(0) == c){
        words.add(wordList.get(i));
     }
  }

  return "Size: "+words.size() + " "+c;             
}

【问题讨论】:

  • 举例说明您的wordList 中的值。您正在尝试哪个值??
  • 我假设你的 wordList 单词都没有以你的变量 c char 开头。
  • 您的代码没有问题。检查wordList 中的文字。如果有任何以您发送的字符开头的单词,它肯定会报告。
  • 我正在为一个英语项目制作一个离合诗生成器,因此 wordList 包含以字母表中每个字母开头的值。该方法会为单词的每个字母调用,理想情况下会为每个字母从 wordList 中给出一个值。
  • 你测试的日期是什么时候??

标签: java arrays sorting arraylist


【解决方案1】:

如果您想返回单词的ArrayList,请使用以下内容:

public ArrayList<String> singlePhrase(char c, ArrayList<String> wordList) {
    ArrayList<String> words = new ArrayList<String>();
    for (int i = 0; i < wordList.size(); i++) {
        if (Character.toLowerCase(wordList.get(i).charAt(0)) == Character.toLowerCase(c)) {
            words.add(wordList.get(i));
        }
    }
    return words;
}

请注意,它会比较两个字符的小写版本。

【讨论】:

  • 这就是之前的方法,但我更改它以显示在方法结束时数组为空。当我运行它时,它会返回三个像这样的空 ArrayList:[ ]、[ ]、[ ]
【解决方案2】:

感谢大家的帮助,但答案太简单了。在被解析的 .txt 文件中,所有字符串都以大写字母开头。测试输入全部为小写,导致 '==' 为假并且永远不会触发 if() 语句。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 2014-06-18
    • 1970-01-01
    相关资源
    最近更新 更多