黑马程序员技术交流社区
标题:
18期还有人回答问题吗,想问下一个程序的执行顺序??
[打印本页]
作者:
彭波
时间:
2013-3-30 11:31
标题:
18期还有人回答问题吗,想问下一个程序的执行顺序??
本帖最后由 彭波 于 2013-3-31 09:05 编辑
/*
用于记录应用程序运行次数
如果使用次数已到,那么给出注册提示
很容易想到:计数器
可是该计数器定义在程序中,随着程序的运行而在内存中存在,
并进行自增。
可是随着该应用程序的退出,该计数器也在内存中消失。
下一次再启动该程序,又重新开始从0计数。
程序即使结束,该计数器的值也存在。
下次程序启动会先加载该计数器的值并加1后再重新存储起来
所以要建立一个配置文件,用于记录该软件的使用次数。
该配置文件使用键值对的形式。
这样便于阅读数据,并操作数据。
键值对数据是map集合。
数据是以文件形式存储,使用io技术。
那么map+io ----> properties
配置文件可以实现应用程序数据的共享
*/
import java.io.*;
import java.util.*;
class RunCount
{
public static void main(String[] args)throws IOException
{
Properties prop = new Properties();//创建集合对象
File file = new File("count.ini");//创建文件对象
if(!file.exists())//判断文件是否存在,没有就建一个
file.createNewFile();
FileInputStream fis = new FileInputStream(file);
prop.load(fis);//流中数据加载到集合
int count = 0;
System.out.println(prop);//这个地方加个输出语句,我就晕了,试问这个程序的执行顺序??
String value = prop.getProperty("time");//通过键拿值,试问没有setProperty,到这是不是要跳转到下面的58行执行,
if(value != null)
{
count = Integer.parseInt(value);//把字符串转成整形数据
if(count>=5)
{
System.out.println("您好,使用次数已到");
return ;
}
}
count++;
prop.setProperty("time", count+"");//必须写成count+"",表示数字转成字符串
FileOutputStream fos = new FileOutputStream(file);
prop.store(fos,"");//存储到文件中
fos.close();
fis.close();
}
}
复制代码
{: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