黑马程序员技术交流社区

标题: 网络编程中的一个标记问题 [打印本页]

作者: →★稻草人☆    时间: 2014-3-20 16:07
标题: 网络编程中的一个标记问题
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有点晕,哪位大神帮忙解答一下
作者: 一年_Hei    时间: 2014-3-20 16:13
flag 用来判断从客户端传过来的用户名是否存在,BufferedReader buff=new BufferedReader(new FileReader("user.txt"));这句话就相当于读取数据库中的用户名,while循环用来判断该用户是否存在,存在把flag值设为true
作者: 青木郎    时间: 2014-3-20 17:10
就是判断一下你读进来的数据是否和name相同,相同就登陆成功,flag是个标志,让你进入下面的if语句块中的
while((line=buff.readLine())!=null)
                        {
                                if(line.equals(name))
                                {
                                         System.out.println(name+",已登录");
                                           pw.println(name+"欢迎光临");
                                         break;
                                }
                        }
这样不要flag也行,只是没有后面登录失败的提示语了
              
作者: 严涛    时间: 2014-3-20 19:11
flag标记只是验证你输入的name在user.txt文件中是否已经存在,如果存在,先将标记flag置为true。
再接着对flag进行判断,为true则已经登录,为false则用户名不存在。
望采纳,求技术分!
作者: 李猛    时间: 2014-3-20 20:40
If(flag){}干什么用啊?貌似可以去掉吧!就你的程序而言flag主要是判断你的文件中是否存在你传入的值,通过while循环遍历整个文件(或者说是你的数据库)进行匹配你传入的值,如果存在就将标记设置为真,否则标记为假。
但是我感觉你没必要这样做的你的循环中可以加一句如果if(line.equuals(name))你就可以打印用户登录,然后break;  while循环外边你可以判定line的值,如果为null,说明文件已经全部遍历,没有找到该用户这样就好了
作者: 李猛    时间: 2014-3-20 20:41
我说的是if()里面的break;
作者: 张傻叉    时间: 2014-5-18 22:18
874890614 加我




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