java – 根据单词数对字符串列表进行排序

我有一个文件将每一行转储到ArrayList中的一个位置,我希望用户能够将列表排序为只有具有一定数量单词的行.我无法弄清楚如何打印剩余的列表(正确编号的条目).

它首先找到列表中的第一个单词然后迭代CharSequence并检查字符是否等于空格,”如果是,则它将nWords增加1并且如果nWords不等于userInput(数字)用户输入按字数对列表进行排序),它应该从列表中删除该项.

ArrayList<CharSequence> str = new ArrayList();
str.add("Hello");
str.add("Hi there");
str.add("toad");
str.add("i see you");

System.out.println("How many words?");
Scanner scan = new Scanner(System.in);
int userInput = scan.nextInt();

for (int loopNumber = 0; loopNumber < str.size(); ) {
    int nWords = 1;
    for (int i = 0; i < str.get(loopNumber).length(); i++) {
        if ( str.get(loopNumber).charAt(i) == ' ') {
            nWords++;
            if (nWords != userInput) {
                str.remove(loopNumber);
            }
        }
    }
    loopNumber++;
}

最佳答案 你不需要排序.您需要在没有正确数量的单词的情况下删除这些行.

对于此任务,Iterator是首选武器,因为您可以在迭代时调用其remove()方法:

for (Iterator<String> i = str.iterator(); i.hasNext();) {
    if (i.next().split(" +").length != userInput)
        i.remove();
}

这里的所有都是它的.

还要注意通过split()方法计算单词的简洁方法.

点赞