黑马程序员技术交流社区

标题: 一点没思路 ,求解。帮忙。 [打印本页]

作者: 杨习平    时间: 2012-8-25 21:33
标题: 一点没思路 ,求解。帮忙。
要求获取一个程序运行的次数
     如果满足5次,那么该程序退出,并给出注册的提示,结束程序.
   高手帮忙给个答复和详解,
作者: 杨震    时间: 2012-8-25 21:40
建立一个文件记数,程序运行一次便读取文件往文件里记数,当发现已经达到五次便结束程序
作者: 尤泽红    时间: 2012-8-25 23:44
int i=0;//while循环条件
int n=0;//每次循环出来的值
while(i<5){
n=n+1;//每次循环N的值每次+1
//当N的值大于或等于5时
if(n>=5){
//输出语句,返回结果
System.out.println("OK");
return;
}
System.out.println("您当前的次数是:"+n);
作者: 杨震    时间: 2012-8-26 09:26
尤泽红 发表于 2012-8-25 23:44
int i=0;//while循环条件
int n=0;//每次循环出来的值
while(i=5){

你这是不行的,楼主问的是程序运行五次退出,你这是循环运行五次退出,循环你写的也不对
作者: 黄敏    时间: 2012-8-26 12:06
给出设计思路:

用于记录应用程序运行次数。
如果使用次数已到,那么给出注册提示。


很容易想到的是:计数器。
可是该计数器定义在程序中,随着程序的运行而在内存中存在,并进行自增。
可是随着该应用程序的退出,该计数器也在内存中消失了。


下一次在启动该程序,又重新开始从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;
                String value = prop.getProperty("time");
               
                if(value!=null)
                {
                        count = Integer.parseInt(value);
                        if(count>=5)
                        {
                                System.out.println("您好,使用次数已到,拿钱!");
                                return ;
                        }

                }

                count++;

                prop.setProperty("time",count+"");

                FileOutputStream fos = new FileOutputStream(file);

                prop.store(fos,"");

                fos.close();
                fis.close();
               
        }
}


作者: zhaosenyang    时间: 2012-8-26 12:06
看这题,估计咱们一个班的,这作业我昨晚上做了,你看看:

/*
要求获取一个程序运行的次数
如果满足5次,那么该程序退出,并给出注册的提示,结束程序.
Properties类:
list(PrintStream out) 将属性列表输出到指定的输出流。

list(PrintWriter out) 将属性列表输出到指定的输出流。

load(InputStream inStream) 从输入流中读取属性列表(键和元素对)
store(OutputStream out, String comments) 将属性列表(键和元素对)写入输入流。

思路:
1:创建输入流,读取某配置文件count.txt,如果,键值为5,提示注册。
3:定义Properties集合,键count 值 0,值自增1
4:创建输出流,将集合中的元素写入到logon.txt文件


*/
import java.io.*;
import java.util.*;
class Logon
{
        public void logon() throws IOException
        {
                //创建一个文件 记录软件试用次数
                File file=new File("logon.ini");
                file.createNewFile();
                //创建输入流,源:logon.txt
                FileInputStream fis=new FileInputStream(file.getName());
                //创建属性集
                Properties prop=new Properties();
                prop.load(fis);//将输入流指向的文件内容,载入到属性集
                fis.close();
                if (prop.isEmpty())//如果文件为空,那么属性集为空
                {
                        prop.put("count","0");//添加属性表
                }
                Integer value=new Integer( prop.getProperty("count"));
                int count=value.intValue();//由键获取值,转换为int数据
                if (count==5)//次数为5,那么提示注册并退出虚拟机
                {
                        System.out.println("软件试用次数达到5次,请注册后继续使用!");
                        System.exit(0);
                }
                count++;//次数自增一次
                String newvalue=new Integer(count).toString();//转换为String类型
                prop.put("count",newvalue);//修改属性表
                //输出流 目的地:logon.txt
                FileOutputStream fos=new FileOutputStream(file.getName());
                prop.store(fos,null);//将属性集内容通过输出流保存到指定文件中
                fos.close();//关闭流

        }

}
public class HomeWork4
{
        public static void main(String[] args)throws IOException
        {
                Logon l=new Logon();
                l.logon();
                System.out.println("Hello World!");
        }

}

作者: 王金科    时间: 2012-8-26 12:31
楼主你这个需要用到IO流,在配置文件中记录程序运行的次数,楼上的兄弟已经给出了正确答案了
作者: 杨震    时间: 2012-8-26 12:49


       
        public static void main(String[] args) throws Exception, IOException {
                //建立文件对象
                File countFile = new File("count.txt");
                //测试文件是否存在,第一次运行文件不存在
                if (countFile.exists())
                {
                        //读取文件记录的次数
                        BufferedReader in = new BufferedReader(new FileReader(countFile));
                        int count = Integer.parseInt(in.readLine());
                        in.close();
                       
                        //如果次数套数等于5退出程序
                        if (count >= 5)
                        {
                                System.out.println("已免费使用五次,请注册");
                                System.exit(0);
                        }
                        //否则增加文件中记录的次数
                        else
                        {
                                count++;
                                System.out.println("欢迎使用,程序运行第" + count + "次");
                               
                               
                                BufferedWriter out = new BufferedWriter(new FileWriter(countFile));
                                out.write("" + count);
                                out.close();
                               
                        }
                }
                //如果第一次运行文件不存在,则建立新记数文件并初始化内容为1
                else
                {
                        countFile.createNewFile();

                        BufferedWriter out = new BufferedWriter(new FileWriter(countFile));
                        out.write("1");
                        out.close();
                       
                        System.out.println("欢迎使用,程序运行第一次");
                       
                }

        }


作者: 杨震    时间: 2012-8-26 12:51
写好了,不是gui的,楼主看下
作者: 杨震    时间: 2012-8-26 12:52
杨震 发表于 2012-8-25 21:40
建立一个文件记数,程序运行一次便读取文件往文件里记数,当发现已经达到五次便结束程序 ...

版主来给我加分,我现在还不到十分,日记写好了技术分不够提交不了




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