我想读取一个只包含数字的txt文件。这个文件是UTF-8编码,数字之间只有换行符分隔(没有空格或其他任何字符)。每当我调用Integer.valueOf(myString)时,就会出现异常。
这个异常非常奇怪,因为如果我创建一个预定义的字符串,比如"56\n",并使用.trim()方法,它就可以完美地工作。但在我的代码中,情况不仅如此,而且异常文本显示无法转换的是"54856"。我尝试在那里加入一个换行符,然后错误文本显示无法转换的是"54856\n"。
除此之外,我还缺少什么?
异常信息如下所示:
这个异常非常奇怪,因为如果我创建一个预定义的字符串,比如"56\n",并使用.trim()方法,它就可以完美地工作。但在我的代码中,情况不仅如此,而且异常文本显示无法转换的是"54856"。我尝试在那里加入一个换行符,然后错误文本显示无法转换的是"54856\n"。
除此之外,我还缺少什么?
File ficheroEntrada = new File("C:\\in.txt");
FileReader entrada =new FileReader(ficheroEntrada);
BufferedReader input = new BufferedReader(entrada);
String s = input.readLine();
System.out.println(s);
Integer in;
in = Integer.valueOf(s.trim());
System.out.println(in);
异常信息如下所示:
Exception in thread "main" java.lang.NumberFormatException: For input string: "54856"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
at java.base/java.lang.Integer.parseInt(Integer.java:658)
at java.base/java.lang.Integer.valueOf(Integer.java:989)
at Quicksort.main(Quicksort.java:170)
文件in.txt包含以下内容:
54856
896
54
53
2
5634
'\r'
)。 - NeijwiertArrays.toString
从字符串中打印出字符数组。 - RealSkepticinput
是什么类型的对象?你能展示一下创建它的代码行吗? - lealceldeiroSystem.out.println(".." + s + "..");
,这可能会有所帮助。奇怪的是,trim函数不会删除\r
。 - matt