Bandysol 2022-07-22 13:26 采纳率: 83.3%
浏览 26
已结题

这个问题要如何解决?

我在测试以下代码时出现了问题:

import java.util.Scanner;
import java.io.*;

public class pass {
    public static void main(String[] args) throws IOException {
        Scanner scan = new Scanner(System.in);
        final String ago = "Bandysol";
        final String bgo = "YUANMOPRE01";
        System.out.println("原魔");
        System.out.println("Versios 1.0.0 PRE1");
        System.out.println("登录");
        System.out.print("账号:");
            String a = scan.next();
            System.out.print("密码:");
            String b = scan.next();
        if (a == ago) {
            if (b == bgo) {
                System.out.println("登录成功!");
                System.out.println("正在进入游戏");
                System.out.println("欢迎!");

                System.out.println("选择国家");
                System.out.println("‘m’为蒙德。‘l’为璃月。‘d’为稻妻。");
                System.out.print("请选择:");
                String c = scan.next();
                if (c == "m") {
                    System.out.println("正在制作中!");
                }
                if (c == "l") {
                    System.out.println("正在制作中!");
                }
                if (c == "d") {
                    System.out.println("正在制作中!");
                } else {
                    System.out.print("错误!");
                }
            }
        }
        if (a != "Bandysol") {
            if (b != "YUANMOPRE01") {
                System.out.println("输入的账号或密码不正确!");
            }
        }
    }
}

测试时即使输入的“账号”和“密码”准确无误,系统也会提示“输入的账号或密码不正确!”。
在后面让他比较我的输入和ago、bgo,它输出了一个false。
但是让他输出我的输入和ago、bgo,是个人都能看出来他们一模一样。
调试模式代码:

import java.util.Scanner;
import java.io.*;

public class passpre {
    public static void main(String[] args) throws IOException {
        Scanner scan = new Scanner(System.in);
        final String ago = "Bandysol";
        final String bgo = "YUANMOPRE01";
        System.out.println("原魔");
        System.out.println("Versios 1.0.0 PRE1");
        System.out.println("登录");
        System.out.print("账号:");
            String a = scan.next();
            System.out.print("密码:");
            String b = scan.next();
        if (a == ago) {
            if (b == bgo) {
                System.out.println("登录成功!");
                System.out.println("正在进入游戏");
                System.out.println("欢迎!");

                System.out.println("选择国家");
                System.out.println("‘m’为蒙德。‘l’为璃月。‘d’为稻妻。");
                System.out.print("请选择:");
                String c = scan.next();
                if (c == "m") {
                    System.out.println("正在制作中!");
                }
                if (c == "l") {
                    System.out.println("正在制作中!");
                }
                if (c == "d") {
                    System.out.println("正在制作中!");
                } else {
                    System.out.print("错误!");
                }
            }
        }
        if (a != "Bandysol") {
            if (b != "YUANMOPRE01") {
                System.out.println("输入的账号或密码不正确!");
            }
        }
        System.out.println(a);
        System.out.println(ago);
        System.out.println(b);
        System.out.println(bgo);
        boolean d = a == ago;
        boolean e = b == bgo;
        System.out.println(d);
        System.out.println(e);
    }
}

JDK版本:18.0.1.1
有没有人告诉我怎么解决啊!

  • 写回答

5条回答 默认 最新

  • CodeDevMaster Java领域优质创作者 2022-07-22 13:44
    关注

    Java中字符串内容使用equals()方法进行比较,对象地址使用==比较

    请参考以下示例代码:

        public static void main(String[] args) throws IOException {
            Scanner scan = new Scanner(System.in);
            final String ago = "Bandysol";
            final String bgo = "YUANMOPRE01";
            System.out.println("原魔");
            System.out.println("Versios 1.0.0 PRE1");
            System.out.println("登录");
            System.out.print("账号:");
            String a = scan.next();
            System.out.print("密码:");
            String b = scan.next();
            if (ago.equals(a) && bgo.equals(b)) {
                System.out.println("登录成功!");
                System.out.println("正在进入游戏");
                System.out.println("欢迎!");
    
                System.out.println("选择国家");
                System.out.println("‘m’为蒙德。‘l’为璃月。‘d’为稻妻。");
                System.out.print("请选择:");
                String c = scan.next();
                if (Objects.equals(c, "m")) {
                    System.out.println("正在制作中!");
                }
                if (Objects.equals(c, "l")) {
                    System.out.println("正在制作中!");
                }
                if (Objects.equals(c, "d")) {
                    System.out.println("正在制作中!");
                } else {
                    System.out.print("错误!");
                }
            }
            if (!"Bandysol".equals(a) && !"YUANMOPRE01".equals(b)) {
                System.out.println("输入的账号或密码不正确!");
            }
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 7月30日
  • 已采纳回答 7月22日
  • 创建了问题 7月22日

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度