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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© →★稻草人☆ 中级黑马   /  2014-3-20 16:07  /  1516 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

for(int x=0;x<3;x++)
                        {
                        BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
                        String name=br.readLine();
                        if(name==null)
                                break;
                        PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
                        BufferedReader buff=new BufferedReader(new FileReader("user.txt"));
                        String line=null;
                        boolean flag=false;
                        while((line=buff.readLine())!=null)
                        {
                                if(line.equals(name))
                                {
                                        flag=true;
                                        break;
                                }
                        }
                        if(flag)
                        {
                                System.out.println(name+",已登录");
                                pw.println(name+"欢迎光临");
                                break;
                        }
                        else
                        {
                                System.out.println(name+",正在尝试登录");
                                pw.println(name+"用户名不存在");
                               
                        }
这个程序中的标记flag有点晕,哪位大神帮忙解答一下

评分

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

查看全部评分

6 个回复

倒序浏览
flag 用来判断从客户端传过来的用户名是否存在,BufferedReader buff=new BufferedReader(new FileReader("user.txt"));这句话就相当于读取数据库中的用户名,while循环用来判断该用户是否存在,存在把flag值设为true

评分

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

查看全部评分

回复 使用道具 举报
就是判断一下你读进来的数据是否和name相同,相同就登陆成功,flag是个标志,让你进入下面的if语句块中的
while((line=buff.readLine())!=null)
                        {
                                if(line.equals(name))
                                {
                                         System.out.println(name+",已登录");
                                           pw.println(name+"欢迎光临");
                                         break;
                                }
                        }
这样不要flag也行,只是没有后面登录失败的提示语了
              

评分

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

查看全部评分

回复 使用道具 举报
flag标记只是验证你输入的name在user.txt文件中是否已经存在,如果存在,先将标记flag置为true。
再接着对flag进行判断,为true则已经登录,为false则用户名不存在。
望采纳,求技术分!

评分

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

查看全部评分

回复 使用道具 举报
If(flag){}干什么用啊?貌似可以去掉吧!就你的程序而言flag主要是判断你的文件中是否存在你传入的值,通过while循环遍历整个文件(或者说是你的数据库)进行匹配你传入的值,如果存在就将标记设置为真,否则标记为假。
但是我感觉你没必要这样做的你的循环中可以加一句如果if(line.equuals(name))你就可以打印用户登录,然后break;  while循环外边你可以判定line的值,如果为null,说明文件已经全部遍历,没有找到该用户这样就好了

评分

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

查看全部评分

回复 使用道具 举报
我说的是if()里面的break;
回复 使用道具 举报
874890614 加我
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马