黑马程序员技术交流社区
标题:
求助啦(发钱啦)
[打印本页]
作者:
房宝彬
时间:
2012-3-2 12:08
标题:
求助啦(发钱啦)
package cn.itcast.day15.exercise;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Exercise5 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("times.txt"));
String line = br.readLine();
br.close();
int times = Integer.parseInt(line);
if(times > 0) {
System.out.println("剩余使用次数: " + --times);
FileWriter fw = new FileWriter("times.txt");
fw.write(times + "");
fw.close();
} else {
System.out.println("软件已到期");
}
}
}
复制代码
大家帮忙看看.谢谢哈,报错提示 数据格式错误.
作者:
田啸
时间:
2012-3-2 12:21
这个是由于你times.txt文件里存在非整数类型,如有字母abc,这时候你程序里int times = Integer.parseInt(line);
首先要看一下parseInt(String s)这个方法啊,这里的s - 包含要解析的 int 表示形式的 String。
如果你文本里含有的是字母或者是其他非int形式的string啊,那这个方法是无法返回值的,就会出现数据类型的错误.
作者:
房宝彬
时间:
2012-3-2 12:43
田啸 发表于 2012-3-2 12:21
这个是由于你times.txt文件里存在非整数类型,如有字母abc,这时候你程序里int times = Integer.parseInt(li ...
parseInt 这个不是把字符串转换整数么? 我的TXT文件里有中文,有数字,有符号啊
作者:
田啸
时间:
2012-3-2 12:50
本帖最后由 田啸 于 2012-3-2 12:53 编辑
这个你可以参考API中的说法:
public static int parseInt(String s)
throws NumberFormatException将字符串参数作为有符号的十进制整数进行解析。除了第一个字符可以是用来表示负值的 ASCII 减号 '-' ('\u002D') 外,字符串中的字符都必须是十进制数字。返回得到的整数值,就好像将该参数和基数 10 作为参数赋予 parseInt(java.lang.String, int) 方法一样。
参数:
s - 包含要解析的 int 表示形式的 String。
返回:
用十进制参数表示的整数值。
抛出:
NumberFormatException - 如果字符串不包含可解析的整数。
,
所以如果你的文件中有中文或者符号等其他费int形式的数据的话,就肯定无法得到返回值,从而抛出NumberFormatException 异常,建议你查问题的时候看看API,这上面才是最根本的解释
作者:
房宝彬
时间:
2012-3-2 12:53
OK,我懂了.谢谢哈
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2