有一个report.CSV文件。
该程序的任务是计算列中的单词出现的次数,并计算列中每个单词的К列中数字的总和。RК
这是程序:
public class CSVtestclass {
public static void main(String[] args) throws IOException {
String FileName = "c:\\TestJava\\report.csv";
File file = new File(FileName);
Map<String, WordInfo> wordInfoMap = new HashMap<>();
try(BufferedReader read = new BufferedReader(new FileReader(file))){
String s;
String wordName;
HashMap<String, int[]> stringIntegerHashMap = new HashMap<>();
read.readLine();
while( (s = read.readLine()) != null) {
String[] next = s.split(";");
wordName = next[10];
if (stringIntegerHashMap.containsKey(wordName)) {
int[] ints = stringIntegerHashMap.get(wordName);
ints[0]++;
ints[1] += Integer.parseInt(next[17]);
} else {
stringIntegerHashMap.put(wordName, new int[]{1, Integer.parseInt(next[17])});
}
}
for (Map.Entry<String, int[]> pair: stringIntegerHashMap.entrySet()) {
int[] value = pair.getValue();
System.out.printf("%s zayavki: %d interakcii: %d%n", pair.getKey(), value[0], value[1]);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
执行程序时出现以下错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""0""
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:638)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at CSVpack.CSVtestclass.main(CSVtestclass.java:31)
我哪里做错了?

表示您正在尝试将“0”转换为数字。但是什么数字对应于“?
在将字符串转换为数字之前,从那里删除所有不必要的
具体来说,在 else 块中,在投资地图(第 31 行)之前,您需要执行以下命令:
或更短:
并将其放入地图中。
公共类 CSVtestclass {
}
有几个要点... 1. 抛出异常是因为您将 0 写成 0 而不是写成“0”。它无法解析。如果您希望它起作用,则必须手动删除引号。2. 在第 N 行,您尝试解析的单元格仅包含文本。这里的任务完全是压倒性的,你自己决定如何处理这篇文章。3. Pars 在特殊情况下是一个有潜在危险的地方。因此,强烈建议使用 try-catch 块来构建它。
总的来说,我添加了引号的替换,也添加了 try-catch 块。在该块中,通常输出到控制台的消息有异常,分别在启动时您会看到一行文本,当然,您不能以任何方式变成数字,自己决定要做什么根据业务任务写入 try-catch 块。祝你好运