Java 文件解析代码给我异常而不是数字,文件编写代码给我写乱七八糟而不是数字
此代码读取记事本文件 这个记事本文件上有数字10 由于某种原因,它返回一个乱七八糟的字母,而不是10个 我想是ascii码,但我不知道 此外,这段代码是从我的编程老师代码修改,所以我不认为它的信用Java 文件解析代码给我异常而不是数字,文件编写代码给我写乱七八糟而不是数字,java,file-io,Java,File Io,此代码读取记事本文件 这个记事本文件上有数字10 由于某种原因,它返回一个乱七八糟的字母,而不是10个 我想是ascii码,但我不知道 此外,这段代码是从我的编程老师代码修改,所以我不认为它的信用 /** *Goes in to the file and extracts a number. * @param fileName * @return an integer */ static int getNumberFromFile(String f
/**
*Goes in to the file and extracts a number.
* @param fileName
* @return an integer
*/
static int getNumberFromFile(String fileName){
int j = 599;
try {
File textFile = new File(fileName);
Scanner sc = new Scanner(textFile);
String input = sc.nextLine();
j = Integer.parseInt(input);
} catch (Exception e) {
System.out.println("Exception: " + e);
}
return j;
}
引发此wierd异常:
java.lang.NumberFormatException:对于输入字符串:“10”和此代码
不要担心一些异常捕获的事情,这些是我用来查看异常是否被捕获的,它只是打印一条(胡说八道)消息。还有一些关于人工智能的话题,不必担心,只需要这段代码就行了,我可以发布人工智能为什么需要它,但我认为这并不重要,这一行没有达到你的预期:
output.write(number);
它在BufferedWriter
上调用write
,因此您应该查阅。。。在这一点上,你会发现你在打电话
只写一个字符
覆盖:write
在课堂上Writer
参数:c
-int
指定要写入的字符
下面的write
链接提供了更多详细信息:
只写一个字符。要写入的字符包含在给定整数值的16个低阶位中;16个高阶位被忽略。
打算支持高效单字符输出的子类应该重写此方法
因此,您正在编写Unicode字符U+000A,或者如果值真的是10,那么将是。我强烈怀疑不是这样,因为那只是一个换行字符
但是,如果您试图写入数字的十进制表示形式,则应首先将其转换为字符串:
output.write(String.valueOf(number));
大概是因为你的文件第一行没有数字。。。(别误会,这是可怕的代码……但如果文件没有问题,它应该给出正确的值。我刚刚尝试过,它对我有效。)文件第一行有599。嗯,我将j=599(一些任意值)更改为j=0,现在它工作了。我怀疑它有尾随空格或其他东西。现在是学习使用调试器的好时机,在解析调试器之前,请仔细查看所读取的内容。不,更改
j
的值并不能使它起作用-我强烈怀疑您更改了文件的内容。可能是尾随空格。您能告诉我为什么它似乎抛出了一个与值无关的例外吗
public void write(int c)
throws IOException
output.write(String.valueOf(number));