我正在尝试编写一个能够获取文本文件并将每一行分成单个字符串并将它们添加到数组中的函数,之后我将获取字符串并将数字转换为整数或双数。但是,每当我尝试对数组中的第一个字符串执行Integer.parseInt()时,它总是返回一个NumberFormatException,它始终是一个整数。
此代码是我尝试执行的简化版本:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
try {
File file = new File("preprocessed_data.txt");
Scanner scanner = new Scanner(file);
while(scanner.hasNextLine()) {
String line = scanner.nextLine();
if (line.length() != 0) {
// Splitting each line into an array of Strings
String[] strings = line.split("\\s+");
// Trying to convert the first String into an Integer
System.out.println(Integer.parseInt(strings[0]));
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
这是我要处理的文本文件:
11259 8111 +2 14 5.9 5.1 2.0 662.8449 1324.6825 1324.6817 0.00081√CDFEK($ 1)KLTK($ 1)[A1:5 P215:218]
10365 4551 +2 28 11.0 9.0 1.7 643.3196 1285.6320 1285.6245 0.00751√CDFEK($ 1)K($ 1)FR [A1:5 P311:313]
16242 4175 +3 23 13.4 7.3 1.6 546.6142 1637.8280 1637.8316 -0.00353√CDFEK($ 1)K K($ 1)GDKAR [A1:6 O448:453]
27030 24226 +3 16 5.4 6.4 1.7 893.4433 2678.3153 2678.3178 -0.00242√KSFCAWLNVPNGNK($ 1)IK($ 1)DNNMR + OxiM(22)27031 25071 +3 10 4.8 5.1 2.6 893.4530 2678.3445 2678.3178 0.02672√KSFCAWLNVPNGNK($ 1)IK($ 1)DNNMR + OxiM(22)[A6:19 D503:509]
25104 18270 +3 19 6.8 5.8 1.7 805.7773 2415.3173 2415.2965 0.02072√KSFCAWLNVPNGNK($ 1)LRNLK($ 1)[A6:19 I271:275 A6:19 I329:333 A6:19 I369:373]
27761 30048 +3 37 6.0 6.5 1.7 959.4729 2876.4041 2876.3883 0.01581√KSFCAWLNVPNGNK($ 1)ELNEQAGESK($ 1)[A6:19 I469:478]
26769 27493 +3 17 13.0 6.4 1.3 883.4568 2648.3560 2648.3541 0.00191√KSFCAWLNVPNGNK($ 1)KPLDFEK($ 1)26781 28982 +3 15 9.4 6.6 1.6 883.4586 2648.3611 2648.3541 0.00701√KSFCAWLNVPNGNK($ 1)KPLDFEK($ 1)[A6:19 K1379:1385]
这是我不断得到的错误:
线程中的异常" main" java.lang.NumberFormatException:对于输入字符串:" 11259" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 在java.lang.Integer.parseInt(Integer.java:580) 在java.lang.Integer.parseInt(Integer.java:615) 在com.company.test.main(test.java:25)
答案 0 :(得分:0)
这看起来像隐形字符,因为您的代码适合我。
我强烈建议在Windows上的notepad.exe等编辑器中打开文件,并确保没有不可见的字符。
答案 1 :(得分:0)
我试图处理的文本文件是用UTF-8编码的,一旦我将其切换到ANSI,它就会删除文件开头的不可见字符并且代码有效。