我有一个文件将每一行转储到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()方法计算单词的简洁方法.