黑马程序员技术交流社区

标题: scanner问题 求原理解释 [打印本页]

作者: 冷锋也温柔    时间: 2014-8-18 21:48
标题: scanner问题 求原理解释
public class StringTest2 {
        public static void main(String[] args) {
       
                String name = "admin";
                String pwd = "admin";

                // x=0,1,2
                for (int x = 0; x < 3; x++) {
       
                        Scanner sc = new Scanner(System.in);   它为什么要放在for循环中呢   
                        System.out.println("请输入用户名:");
                        String username = sc.nextLine();
                        System.out.println("请输入密码:");
                        String password = sc.nextLine();
               
                        if (name.equals(username) && pwd.equals(password)) {
                                System.out.println("登录成功,你就可以开始完猜数字小游戏了");
                                Game.palyGame();
                                break;
                        } else {
                                // 2,1,0
                                if ((2 - x) == 0) {
                                        System.out.println("帐号被锁定,请与管理员联系");
                                } else {
                                        System.out.println("登录失败,你还有" + (2 - x) + "次机会");
                                }
                        }
                }
        }
}


作者: ssy1939    时间: 2014-8-19 04:49
不放也可以,   放for里面的话,每循环一次都new一次,很浪费资源的说        还有,你没导包怎么用Scanner
作者: 华谦    时间: 2014-8-19 08:47
我觉得应该把他定义在外面,然后在里面传值,比较没那么浪费资源
作者: 王凯路路    时间: 2014-8-19 09:01
我也感觉得放了外面, 在里面太浪费资源了, 每次都得new一个
作者: 冷锋也温柔    时间: 2014-8-19 23:18
ssy1939 发表于 2014-8-19 04:49
不放也可以,   放for里面的话,每循环一次都new一次,很浪费资源的说        还有,你没导包怎么用Scanner ...

只写主方法了  必须放里面  否则运行出错  挺郁闷
作者: ssy1939    时间: 2014-8-19 23:28
冷锋也温柔 发表于 2014-8-19 23:18
只写主方法了  必须放里面  否则运行出错  挺郁闷

我的意思是放for循环的上面,不要放里面,要不然每次都要创建Scanner对象  
作者: 冷锋也温柔    时间: 2014-8-19 23:45
哦哦 明白了 感谢这么耐心:handshake
作者: 执笔梦    时间: 2014-8-20 10:24
因为你有三次登陆的机会啊..
作者: 周峰峰    时间: 2014-8-20 11:25
学习学习




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