每当我运行应该分析文本输入的代码时,我都会得到以下输出。用于计算单词和字母数字数字的其他方法有效,但假设吐出具有五个或更多字符的单词的其他方法不起作用。我不断收到一个错误,说没有这样的元素,我猜这意味着迭代器找不到更多元素,但这不应该发生,因为我使用了 while 语句。
这是输出:
输入文字 跑步 字数:1 字母数字计数:7 按升序排列的单词 跑步 有五个或更多字符的单词 线程“主”java.util.NoSuchElementException 中的异常 在 java.util.AbstractList$Itr.next(未知来源) 在 com.yahoo.chris511026.paragraphcount.ManifoldMethod.wordSort(ManifoldMethod.java:55) 在 com.yahoo.chris511026.paragraphcount.ParagraphAnalyzer.main(ParagraphAnalyzer.java:15)
我的代码:
package com.yahoo.chris511026.paragraphcount;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
public class ManifoldMethod {
static ArrayList<String> stringList = new ArrayList<String>();
public static void wordCount(String data) {
int counter = 0;
for (String str : data.split("[^a-zA-Z-']+")) {
stringList.add(str);
counter++;
}
System.out.println("Word count: " + counter);
}
public static void alphanumericCount(String data) {
data = data.replaceAll("[[^a-z]&&[^A-Z]&&[^0-9]]", "");
System.out.println("Alphanumeric count: " + data.length());
}
public static void wordSort(String data) {
Collections.sort(stringList, new StringComparator());
System.out.println("Words in ascending order ");
for (String s: stringList)
System.out.println(s);
System.out.println("Words with five or more characters ");
int count=0;
Iterator<String> itr=stringList.iterator();
while(itr.hasNext())
if (itr.next().replaceAll("[[^a-z]&&[^A-Z]&&[^0-9]]", "").length ()>=5) {
System.out.println(itr.next());
count++;
}
if (count==0) {
System.out.println("None.");
}
}
}
编辑:
我纠正了它,String str=itr.next();
在这里使用的是新的部分。但是现在我知道该String
变量无法解析为变量。为什么?
while(itr.hasNext())
String str=itr.next();
if (str.replaceAll("[[^a-z]&&[^A-Z]&&[^0-9]]", "").length ()>=5) {
System.out.println(str);
count++;
}