作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在读取 csv 文件时遇到问题,该文件包含格式为 #.##,#.##
的数字,这些数字是随机生成的 double (坐标),作为字符串写入文件中另一个程序。
这是我用来从文件读取并解析坐标的代码部分:
private void populateData() {
for (int i = 0; i < this.data[0].length; i++) {
try {
BufferedReader br = new BufferedReader(new FileReader("Sample.csv"));
while (br.readLine() != null) {
String[] split = br.readLine().split(",");
this.data[0][i] = Float.parseFloat(split[0].trim());
this.data[1][i] =Float.parseFloat(split[1].trim());
}
} catch (FileNotFoundException ex) {
Logger.getLogger(FastScatterPlotDemo.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(FastScatterPlotDemo.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
它给了我一个奇怪的异常
Exception in thread "main" java.lang.NumberFormatException: For input string: "4⌷�3⌷�9⌷�.⌷�8⌷�9⌷"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1222)
at java.lang.Float.parseFloat(Float.java:422)
at lab05b_Task2.FastScatterPlotDemo.populateData(FastScatterPlotDemo.java:86)
at lab05b_Task2.FastScatterPlotDemo.<init>(FastScatterPlotDemo.java:41)
at lab05b_Task2.FastScatterPlotDemo.main(FastScatterPlotDemo.java:107)
我不知道这是否与我在ubuntu上工作有关,这是一个编码问题。
最佳答案
您似乎有一个 UTF-16 编码的文件。您必须确定它是 UTF-16LE 还是 UTF-16BE。我首先猜想是UTF-16LE。我建议您设置编码以匹配文件,并且您应该正确读取它。如果您不知道编码应该是什么,请询问文件的来源它/他们使用了什么。
顺便说一句,如果可以避免的话,不要使用float
。尝试使用 double
或 BigDecimal
代替。
关于java.lang.NumberFormatException : For input string: "4�⌷ 3⌷�9�⌷.�8⌷�9⌷" at sun. Misc.FloatingDecimal.readJavaFormatString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24480466/
我是一名优秀的程序员,十分优秀!