文件解析代码给出了异常而不是数字,文件编写代码给出了写入乱码而不是数字

时间:2015-07-30 16:58:00

标签: java file-io

此代码读取记事本文件 这个记事本文件上面有数字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;

    }
  

抛出这个奇怪的异常异常:   java.lang.NumberFormatException:对于输入字符串:“10”和此代码

/**
 * writes data for the ai to adapt its strategy
 *@param number is the number to write
 * @param fileName is the fileName
 */
public static void writeToFile(String fileName,int number) {

    BufferedWriter output = null;
    try {
        File aFile = new File(fileName);
        FileWriter myWriter = new FileWriter(aFile);
        output = new BufferedWriter(myWriter);
        output.write(number);
        output.newLine();
        output.close();
    } catch (Exception e) {
        System.out.println("Exception:" + e);
        System.out.println("please Report this bug it doesnt understand");
        System.exit(1);
    }
}

不要担心一些异常捕获的东西,这些东西让我看看是否捕获异常它只是打印一个(废话)消息。和一些谈论ai不担心的东西只需要这个代码工作我可以发布为什么ai需要它但我不认为它是相关的

1 个答案:

答案 0 :(得分:2)

这条线没有达到预期效果:

output.write(number);

它在write上呼叫BufferedWriter,因此您应该咨询documentation ...此时您会发现您正在呼叫{{3} }。

public void write(int c)
      throws IOException
     

写一个字符。

     

覆盖:
      课程write中的Writer   参数:
  c - int指定要写的字符

按照write链接提供更多详细信息:

  

写一个字符。要写入的字符包含在给定整数值的16个低位中; 16个高位被忽略。   打算支持高效单字符输出的子类应该重写此方法。

所以,你正在编写Unicode字符U + 000A - 或者如果值是10真的话。我强烈怀疑它不是,因为那只是一个换行符。 / p>

如果您尝试编写数字的十进制表示,则应首先将其转换为字符串:

output.write(String.valueOf(number));