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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Java1211张美红 中级黑马   /  2016-1-1 22:01  /  436 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


public class Login {
        public static void main(String[] args) {
                //登录
                //1.模拟键盘录入用户名,密码
                //2.如果用户名和密码都正确,则成功
                //3.有三次机会
               
                Scanner sc = new Scanner(System.in);
                for (int i = 1;i <= 3;i++){
                        System.out.println("请输入用户名:");
                        String name = sc.nextLine();
                        System.out.println("请输入密码:");
                        String password = sc.nextLine();
                        //字符串是引用类型 == 比较的是地址值,应该用equals
                        /*if (name == "admin" && password == "admin") {
                                System.out.println("欢迎使用");
                        } else {
                                System.out.println("用户名或密码错误,请重新输入");
                        }*/
                       
                        if ("admin".equals(name) && "admin".equals(password)) {
                                System.out.println("欢迎使用");
                        } else {
                                System.out.println("用户名或密码错误,请重新输入,您还有" + (3-i) + "次机会");
                        }
                }
        }       
}
上课学习的小程序,小功能,自己敲时,总会出现点不同,比如:name == "admin",我想比较的是name变量的内容和"admin"的内容是否相等,但是,若直接使用"=="的话,会出现错误,因为"=="比较引用类型的地址,而我想比较的确实内容,所以,程序就出现了问题,应该使用String的equals方法,来比较两个字符串的内容是否相等.
另外,建议"admin".equals(name)这样写,不建议name.equals("equals"),因为name是变量,变量有可能为空,这样来null是无法调用方法的,所以,就会报错了!


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马