A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 房宝彬 黑马帝   /  2012-3-2 12:08  /  1531 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package cn.itcast.day15.exercise;

  2. import java.io.BufferedReader;
  3. import java.io.FileReader;
  4. import java.io.FileWriter;
  5. import java.io.IOException;

  6. public class Exercise5 {

  7.         public static void main(String[] args) throws IOException {
  8.                 BufferedReader br = new BufferedReader(new FileReader("times.txt"));       
  9.                 String line = br.readLine();
  10.                
  11.                 br.close();
  12.                
  13.                 int times = Integer.parseInt(line);
  14.                
  15.                 if(times > 0) {               
  16.                         System.out.println("剩余使用次数: " + --times);
  17.                         FileWriter fw = new FileWriter("times.txt");
  18.                         fw.write(times + "");               
  19.                         fw.close();
  20.                 } else {
  21.                         System.out.println("软件已到期");
  22.                 }
  23.         }

  24. }
复制代码
大家帮忙看看.谢谢哈,报错提示 数据格式错误.

4 个回复

正序浏览
OK,我懂了.谢谢哈
回复 使用道具 举报
本帖最后由 田啸 于 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:54

评分

参与人数 1黑马币 +10 收起 理由
房宝彬 + 10 很给力!

查看全部评分

回复 使用道具 举报
田啸 发表于 2012-3-2 12:21
这个是由于你times.txt文件里存在非整数类型,如有字母abc,这时候你程序里int times = Integer.parseInt(li ...

parseInt 这个不是把字符串转换整数么? 我的TXT文件里有中文,有数字,有符号啊
回复 使用道具 举报
这个是由于你times.txt文件里存在非整数类型,如有字母abc,这时候你程序里int times = Integer.parseInt(line);
首先要看一下parseInt(String s)这个方法啊,这里的s - 包含要解析的 int 表示形式的 String。
如果你文本里含有的是字母或者是其他非int形式的string啊,那这个方法是无法返回值的,就会出现数据类型的错误.

点评

谢谢  发表于 2012-3-2 12:54
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马