JAVA中关于控制台输入的字符与编程中输入的字符不能比较的问题

敲代码的过程中,会遇到各种各样的吊问题,之前遇到过一个小问题,举个例子

public class _01 {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        String userName;
        int passWord;
        System.out.println("请输入账号名称");
        userName=input.next();
        System.out.println("请输入密码");
        passWord=input.nextInt();
        if (userName.equals("青")&&passWord==123){
            System.out.println("欢迎你青");
        }else {
            System.out.println("对不起,你不是青");
        }
        System.out.println();
    }
}

这是一个简单的判断账号密码的小程序,如果输入的userName为"青"并且输入的passWord为123则输出欢迎你青,否则则输入对不起你不是青。

在上面的例子中if()语句在判断uesrName的时候没有同判断passWord的语句相同,passWord直接判断输入的数值是否等于123,而userName的判断却调用了userName.equals“青”,这与String类型的存放方式有关。如果为String类型,“==”对比的则是存放地址是否相同,而equals()则是判断这个函数里的字符串是否相同,所以在这种对比的时候应当用equals()来做对比。下为图解。

代码1使用“==”判断:

public class _01 {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        String userName;
        int passWord;
        System.out.println("请输入账号");
        userName=input.next();
        System.out.println("请输入密码");
        passWord=input.nextInt();
        if (userName=="青"&&passWord==123){
            System.out.println("欢迎你青");
        }else {
            System.out.println("对不起,你不是青");
        }
        System.out.println();
    }
}

运行结果为:

代码2 使用equals()来做判断:

public class _01 {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        String userName;
        int passWord;
        System.out.println("请输入账号");
        userName=input.next();
        System.out.println("请输入密码");
        passWord=input.nextInt();
        if (userName.equals("青")&&passWord==123){
            System.out.println("欢迎你青");
        }else {
            System.out.println("对不起,你不是青");
        }
        System.out.println();
    }
}

运行结果为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值