java.lang.NumberFormatException:对于输入字符串:";4⌷;3⌷;9⌷;8⌷;9⌷&引用;位于sun.misc.FloatingDecimal.readJavaFormatString
我在读取csv文件时遇到问题,该文件包含的数字格式为java.lang.NumberFormatException:对于输入字符串:";4⌷;3⌷;9⌷;8⌷;9⌷&引用;位于sun.misc.FloatingDecimal.readJavaFormatString,java,filereader,Java,Filereader,我在读取csv文件时遇到问题,该文件包含的数字格式为。。。。。。。。。。。。。。。。。。。。。。。。。。这些是随机生成的双精度(坐标),由另一个程序作为字符串写入文件 下面是我用来读取文件并解析坐标的代码部分: private void populateData() { for (int i = 0; i < this.data[0].length; i++) { try { BufferedReader br = new Buff
。。。。。。。。。。。。。。。。。。。。。。。。。。
这些是随机生成的双精度(坐标),由另一个程序作为字符串写入文件
下面是我用来读取文件并解析坐标的代码部分:
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);
}
}
}
private void populateData(){
对于(int i=0;i
这给了我一个奇怪的例外
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)
线程“main”java.lang.NumberFormatException中的异常:对于输入字符串:“4⌷�3.⌷�9⌷�.⌷�8.⌷�9⌷"
在sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1222)中
位于java.lang.Float.parseFloat(Float.java:422)
在lab05b_Task2.FastScatterPlotDemo.populateData(FastScatterPlotDemo.java:86)上
在lab05b_Task2.FastScatterPlotDemo上。(FastScatterPlotDemo.java:41)
在lab05b_Task2.FastScatterPlotDemo.main(FastScatterPlotDemo.java:107)上
我不知道这是否与我正在使用ubuntu这一事实有关,这是一个编码问题。您似乎有一个UTF-16编码的文件。您必须确定它是UTF-16LE还是UTF-16BE。我会首先猜测UTF-16LE。我建议您将编码设置为与文件匹配,并且应该正确读取。如果您不知道编码应该是什么,询问文件的来源它/他们使用了什么
顺便说一句,如果可以避免的话,不要使用
float
。请尝试使用double
或BigDecimal
。您似乎有一个UTF-16编码的文件。您必须确定它是UTF-16LE还是UTF-16BE。我会首先猜测UTF-16LE。我建议您将编码设置为匹配该文件,并正确读取它。如果您没有知道编码应该是什么,询问文件的来源,它/他们使用了什么
顺便说一句,如果可以避免的话,不要使用
float
。请尝试使用double
或BigDecimal
。您是否尝试过显示要解析的字符串?请改用csv解析器库。或者将数字读取为String
,改用NumberFormat
解析。@HotLicks是的,我调试了“439.89”
和“651.67“
@LuiggiMendoza我试过NumberFormat
运气不好,不知道csv解析器我有理由相信Peter找到了答案。你试过显示你试图解析的字符串吗?改用csv解析器库。或者将数字读取为字符串
,并改为使用数字格式
对其进行解析。@HotLicks是的,我调试了拆分
数组有“439.89”
和“651.67”
@luigimendoza我尝试了数字格式
没有运气,我不知道csv parserI我有理由相信Peter有答案。我必须使用float,因为我需要使用JFreeChart FastScatterPlot类,该类需要使用float作为参数,并且csv文件是由我个人生成的,没有做任何编码,如何将编码设置为与文件匹配?getEncoding()
返回UTF8
我只将编码设置为UTF-16,没有确定LE或BE,但它让我通过了此错误。。谢谢,我必须使用float,因为我需要使用JFreeChart FastScatterPlot类,该类需要使用float作为参数,并且csv文件是由我个人生成的,没有对编码做任何操作,如何设置编码以匹配文件?getEncoding()
返回UTF8
我只将编码设置为UTF-16,没有确定LE或BE,但它让我通过了此错误。。非常感谢。