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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李道福 中级黑马   /  2013-9-19 10:46  /  2259 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨增坤 于 2013-9-19 11:42 编辑
  1. import java.io.*;
  2. import java.util.*;

  3. public class PropertiesTest{
  4.         public static void main(String[] args)throws IOException{
  5.                 File file=new File("count.txt");
  6.                 if(!file.exists())
  7.                         file.createNewFile();
  8.                 InputStream in=new FileInputStream(file);
  9.                 OutputStream out=new FileOutputStream(file);
  10.                 Properties pro=new Properties();
  11.                 pro.load(in);
  12.                
  13.                 int count=0;
  14.                 String value=pro.getProperty("time");
  15.                 if(value!=null){
  16.                         count=Integer.parseInt(value);
  17.                         if(count>5){
  18.                                 System.out.println("试用期已过,请购买");
  19.                                 return;
  20.                         }
  21.                 }
  22.                 count++;
  23.                 pro.setProperty("time",count+"");

  24.                 pro.store(out,"");
  25.                 in.close();
  26.                 out.close();
  27.         }
  28. }
复制代码
//我是想让程序运行达到一定次数后就不再能运行,请问这里那里错了?找了头天没找到,程序编译通过,但文件中的time总是1

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

15 个回复

倒序浏览
主函数,只能运行一次吧。。。
回复 使用道具 举报
主函数只能执行一次吧。。。
count初值为0
所以你运行后,
count++;
pro.setProperty("time",count+"");
执行一次。time就是1

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
哥们儿,你发帖子的时候,程序代码是怎么发布成这种格式的啊?是从eclipse直接复制么?
回复 使用道具 举报
“我是想让程序运行达到一定次数后就不再能运行,请问这里那里错了?”错就错在要想让程序运行多次那就得用for、foreach、while、do_while、递归,可是你什么这些都没使用,你叫他怎么运行多次!??所以程序只执行一次就停止结果就是1了。

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
1、你运行一次记录一次,count的值要进行判断一下,如果不为null就把文件中的time的值提取赋值给count这样你的值就不会一直被初始化为零了。
2、楼主是不是想运行一次time就增加+,到第5次就不能用了是吧。
回复 使用道具 举报
sil 发表于 2013-9-19 11:00
哥们儿,你发帖子的时候,程序代码是怎么发布成这种格式的啊?是从eclipse直接复制么? ...

从myeclipse或eclipse正常复制粘贴就可以,没什么蹊跷
回复 使用道具 举报
package com.itheima;

import java.io.*;
import java.util.*;

public class PropertiesTest{
        public static void main(String[] args)throws IOException{
                  Properties pro=new Properties();   
                  File file=new File("d:\\count.txt");
                if(!file.exists())
                        file.createNewFile();
                InputStream in=new FileInputStream(file);
               
               
                pro.load(in);
               
                int count=0;
                String value=pro.getProperty("time");
                if(value!=null){
                        count=Integer.parseInt(value);
                        if(count>5){
                                System.out.println("试用期已过,请购买");
                                return;
                        }
                }
                count++;
                pro.setProperty("time",count+"");
                OutputStream out=new FileOutputStream(file);
                pro.store(out,"");
                in.close();
                out.close();
        }
}应该这么写你看看
回复 使用道具 举报
输出流应该写在count++后面要不都白搭
回复 使用道具 举报
sil 发表于 2013-9-19 11:00
哥们儿,你发帖子的时候,程序代码是怎么发布成这种格式的啊?是从eclipse直接复制么? ...

发帖的时候有一个<>的图标,点击后将代码粘贴进去,然后提交,就可以
回复 使用道具 举报
sil 中级黑马 2013-9-19 11:37:50
11#
陈国柱 发表于 2013-9-19 11:36
发帖的时候有一个的图标,点击后将代码粘贴进去,然后提交,就可以

哦  这样 搜噶!  谢谢哈!
回复 使用道具 举报
冷漠无天 发表于 2013-9-19 11:29
package com.itheima;

import java.io.*;

你这个和楼主的有啥区别呢啊
回复 使用道具 举报
属性没有修改就过早地建立了文件输出流了
  1. import java.io.*;
  2. import java.util.*;

  3. public class PropertiesTest{
  4.         public static void main(String[] args)throws IOException{
  5.                 File file=new File("count.txt");
  6.                 if(!file.exists())
  7.                         file.createNewFile();
  8.                 InputStream in=new FileInputStream(file);
  9. //                OutputStream out=new FileOutputStream(file);//这里过早建立了文件传入输出流,应该等文件属性修改了之后才建立文件输出流
  10.                 Properties pro=new Properties();
  11.                 pro.load(in);
  12.                
  13.                 int count=0;
  14.                 String value=pro.getProperty("time");
  15.                 if(value!=null){
  16.                         count=Integer.parseInt(value);
  17.                         if(count>5){
  18.                                 System.out.println("试用期已过,请购买");
  19.                                 return;
  20.                         }
  21.                 }
  22.                 count++;
  23.                 pro.setProperty("time",count+"");//修改属性
  24.                
  25.                 OutputStream out=new FileOutputStream(file);//这是才建立文件输出流就可以累计次数了

  26.                 pro.store(out,"");
  27.                 in.close();
  28.                 out.close();
  29.         }
  30. }
复制代码
回复 使用道具 举报
你眼睛好使吗你试试我的代码和楼主一样不?
回复 使用道具 举报
陈国柱 发表于 2013-9-19 11:54
属性没有修改就过早地建立了文件输出流了

多谢……但不知道文件流的早建立和晚建立有什么区别?能说详细点嘛?谢谢……
回复 使用道具 举报
李道福 发表于 2013-9-19 17:29
多谢……但不知道文件流的早建立和晚建立有什么区别?能说详细点嘛?谢谢…… ...

这个,我也不知道怎么解释
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马