Java 文件解析代码给我异常而不是数字,文件编写代码给我写乱七八糟而不是数字

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

此代码读取记事本文件 这个记事本文件上有数字10 由于某种原因,它返回一个乱七八糟的字母,而不是10个 我想是ascii码,但我不知道 此外,这段代码是从我的编程老师代码修改,所以我不认为它的信用

/**
     *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));