黑马程序员技术交流社区

标题: 18期还有人回答问题吗,想问下一个程序的执行顺序?? [打印本页]

作者: 彭波    时间: 2013-3-30 11:31
标题: 18期还有人回答问题吗,想问下一个程序的执行顺序??
本帖最后由 彭波 于 2013-3-31 09:05 编辑
  1. /*
  2.         用于记录应用程序运行次数
  3.         如果使用次数已到,那么给出注册提示
  4.         
  5.         很容易想到:计数器
  6.         可是该计数器定义在程序中,随着程序的运行而在内存中存在,
  7.         并进行自增。
  8.         可是随着该应用程序的退出,该计数器也在内存中消失。
  9.         
  10.         下一次再启动该程序,又重新开始从0计数。
  11.         
  12.         程序即使结束,该计数器的值也存在。
  13.         下次程序启动会先加载该计数器的值并加1后再重新存储起来
  14.         
  15.         所以要建立一个配置文件,用于记录该软件的使用次数。
  16.         
  17.         该配置文件使用键值对的形式。
  18.         这样便于阅读数据,并操作数据。
  19.         
  20.         键值对数据是map集合。
  21.         数据是以文件形式存储,使用io技术。
  22.         那么map+io  ----> properties
  23.         
  24.         配置文件可以实现应用程序数据的共享
  25. */
  26. import java.io.*;
  27. import java.util.*;
  28. class RunCount
  29. {
  30.         public static void main(String[] args)throws IOException
  31.         {
  32.                 Properties prop = new Properties();//创建集合对象
  33.                
  34.                 File file = new File("count.ini");//创建文件对象
  35.                 if(!file.exists())//判断文件是否存在,没有就建一个
  36.                         file.createNewFile();
  37.                
  38.                 FileInputStream fis = new FileInputStream(file);
  39.                
  40.                 prop.load(fis);//流中数据加载到集合
  41.                
  42.                 int count = 0;
  43.                
  44.                 System.out.println(prop);//这个地方加个输出语句,我就晕了,试问这个程序的执行顺序??
  45.                 String value = prop.getProperty("time");//通过键拿值,试问没有setProperty,到这是不是要跳转到下面的58行执行,
  46.                
  47.                 if(value != null)
  48.                 {
  49.                         count = Integer.parseInt(value);//把字符串转成整形数据
  50.                         if(count>=5)
  51.                         {
  52.                                 System.out.println("您好,使用次数已到");
  53.                                 return ;
  54.                         }
  55.           }
  56.                 count++;
  57.                
  58.                 prop.setProperty("time", count+"");//必须写成count+"",表示数字转成字符串
  59.                
  60.                 FileOutputStream        fos = new FileOutputStream(file);
  61.                
  62.                 prop.store(fos,"");//存储到文件中
  63.                
  64.                 fos.close();
  65.                 fis.close();
  66.         }
  67. }
复制代码
{:soso_e118:}会的出来帮下忙,setProperty写在下面,getProperty写作上面,试问这个程序的执行顺序???我自己在getProperty上面又加了个输出语句。大家试下!这个程序的执行顺序我被
搞晕了

作者: 李尧    时间: 2013-3-30 12:09
没啥晕的吧,如果是第一次执行,不存在"time"=value这个映射关系 所以返回 value=null
直接跳过iif(value != null)  count自增一次, 然后setProperty
如果不是第一次执行,通过"time"拿到value,因为value!=null  进入if 判断 count是否>=5
....
嗯,就是这样...顺序没问题...
作者: 黄玉昆    时间: 2013-3-30 17:14
最好在19区发帖吧。谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2