问题描述
这段代码读取了一个记事本文件,该记事本文件上的数字为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楼
该行不符合您的期望:
output.write(number);
它在BufferedWriter
上调用write
,因此您应该查阅 ...在这一点上您发现您正在调用 。
public void write(int c) throws IOException
写一个字符。
覆写:
write
类Writer
参数:
c
指定要写入的字符的int
在write
链接之后提供了更多详细信息:
写一个字符。 给定整数值的16个低位包含在要写入的字符中。 16个高位被忽略。 打算支持有效的单字符输出的子类应重写此方法。
因此,您正在编写Unicode字符U + 000A-或如果该值确实为10。我强烈怀疑不是,因为那只是换行符。
如果您尝试编写数字的十进制表示,则应首先将其转换为字符串:
output.write(String.valueOf(number));