从CSV文件计算值时出现java系统错误
我试图从CSV文件中获取值,其中数据集类似于:
=================================================
==========开始文件=================
图拉公司
公司,工具B
.....
.....
....
....
公司B,工具A
公司B,工具C
....
....
...
康宾,图恩
======================
我通过使用BufferedReader对象来读取文件的每一行来解决这个问题,然后我为该行创建了一个字符串数组,该数组用逗号分割。之后,我为正在读取的行的字符串数组中的公司和工具名称分配了相应的变量。行中的每个工具和公司名称配对都存储在HashMap中。代码如下:
public void run() {
String csvFile = "/Users/zzzOp/Downloads/companies.csv";
BufferedReader br1 = null;
BufferedReader br2 = null;
BufferedReader br3 = null;
String line = "";
String cvsSplitBy = ",";
try {
//Create BufferedReader object
br1 = new BufferedReader(new FileReader(csvFile));
br2 = new BufferedReader(new FileReader(csvFile));
br3 = new BufferedReader(new FileReader(csvFile));
//Generate User ArrayList for all tools and store in map
while ((line = br1.readLine()) != null) {
String[] inLine = line.split(cvsSplitBy);
String toolName;
toolName = inLine[1];
userMap.put(toolName, new ArrayList<String>());
}
//Map tools with user lists
while ((line = br2.readLine()) != null) {
String[] array = line.split(cvsSplitBy);
String companyName, toolName;
companyName = array[0];
toolName = array[1];
tmpTool.add(toolName);
tmpCmp.add(companyName);
if (userMap.keySet().contains(toolName)) {
userMap.get(toolName).add(companyName);
}
}
//Test for debugging
System.out.println(userMap.get("Dropbox").size());
System.out.println(userMap.get("Salesforce").size());
........
..some code.....
........
.....
....
在上面的两个测试用例中,Dropbox和Salesforce用户的值分别为182和84。但是,当我使用Excel进行计数时,Dropbox和Salesforce用户的值分别为184和85
进行错误计数的根本问题是,我对这些数据的最终目标是计算某人使用工具X的概率p,因为他们也使用工具Y。这会使我在脚本的后半部分中的计算中断。尽管如此,我需要为用户数量计算正确的值。否则,我的分母将始终处于关闭状态
我很困惑,觉得自己好像已经尽了全力。我想我读的文件是正确的,但计数是错误的。我不知道为什么计数不匹配!我感谢所有形式的帮助,谢谢
共 (0) 个答案