我正在尝试计算主题标签在CSV文件中显示的次数。问题是,我正在跳过每一列的最后一行,而不是计算75件事,它只算70.这是代码,对不起我是Java的新手,它可能很简单,但我无法理解它进行。
import java.util.Scanner;
import java.io.File;
public class HashtagCounter {
public static void main(String[] args) throws Exception {
int total = 0;
int count = 0;
File file = new File("hashtags.csv");
Scanner input = new Scanner(System.in);
Scanner scan = new Scanner(file).useDelimiter(",\\s*");
System.out.println("Please enter a hashtag");
String keyboard = input.nextLine();
while(scan.hasNext()){
//System.out.println(scan.next());
total = total + 1;
if(scan.next().equals(keyboard)){
count = count + 1;
}
}
System.out.println("The hashtag " + keyboard + " appears " + count + " time(s), out of a total of " + total + " entries");
}
}
答案 0 :(得分:0)
您在下一行的第一个条目中加入了行的最后一个条目。这是因为您的分隔符",\\s*"
- 它与逗号匹配,但在csv中的最后一个条目之后没有逗号。使用"\n|,\\s*"
匹配换行符(\n
)或逗号。模式A|B
匹配与任一子模式匹配的字符串。它记录在:http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html