当前位置: 首页 > 知识库问答 >
问题:

初学者:Java而循环不会退出?

裴泰平
2023-03-14
public static void main(String[] args) {
    StackX theStack = new StackX(99);

    String current = "Enterprise";
    int logOut = 1;
    String planetName;
    int secretCode;
    //This is the start out, do not loop this
    System.out.println("You are on the enterprise, where would you like to teleport?");

    //while loop will be done after reaching Io
    do {

        Scanner input = new Scanner(System.in);
        //Grab input from user
        System.out.println("Enter a planet name: ");
        planetName = input.nextLine();
        System.out.println("Enter a the four digit code for " + planetName + ": ");
        secretCode = input.nextInt();

        if (current.equals("Enterprise")){

            if (planetName.equalsIgnoreCase("Europa") && secretCode == 9007){
                current = planetName;
                Moon Europa = new Moon(planetName, secretCode);
                theStack.push(Europa);
            } else if (planetName.equalsIgnoreCase("Titan") && secretCode == 1232){
                current = planetName;
                Moon Titan = new Moon(planetName, secretCode);
                theStack.push(Titan);
            } else if (planetName.equalsIgnoreCase("Rhea") && secretCode == 5623){
                current = planetName;
                Moon Rhea = new Moon(planetName, secretCode);
                theStack.push(Rhea);
            } else {
                logOut = 0;
                System.out.println("You are dead.");
            }

        } else if (current.equals("Titan")){

            if (planetName.equalsIgnoreCase("Enterprise") && secretCode == 1212){
                current = planetName;
                Moon Enterprise = new Moon(planetName, secretCode);
                theStack.push(Enterprise);
            } else if (planetName.equalsIgnoreCase("Rhea") && secretCode == 5623){
                current = planetName;
                Moon Rhea = new Moon(planetName, secretCode);
                theStack.push(Rhea);
            } else if (planetName.equalsIgnoreCase("Elara") && secretCode == 1264){
                current = planetName;
                Moon Elara = new Moon(planetName, secretCode);
                theStack.push(Elara);
            } else {
                logOut = 0;
                System.out.println("You are dead.");
            }

        } else if (current.equals("Rhea")){

            if (planetName.equalsIgnoreCase("Enterprise") && secretCode == 1212){
                current = planetName;
                Moon Enterprise = new Moon(planetName, secretCode);
                theStack.push(Enterprise);
            } else if (planetName.equalsIgnoreCase("Titan") && secretCode == 1232){
                current = planetName;
                Moon Titan = new Moon(planetName, secretCode);
                theStack.push(Titan);
            } else if (planetName.equalsIgnoreCase("Europa") && secretCode == 9007){
                current = planetName;
                Moon Europa = new Moon(planetName, secretCode);
                theStack.push(Europa);
            } else {
                logOut = 0;
                System.out.println("You are dead.");
            }

        } else if (current.equals("Europa")){

            if (planetName.equalsIgnoreCase("Enterprise") && secretCode == 1212){
                current = planetName;
                Moon Enterprise = new Moon(planetName, secretCode);
                theStack.push(Enterprise);
            } else if (planetName.equalsIgnoreCase("Rhea") && secretCode == 5623){
                current = planetName;
                Moon Rhea = new Moon(planetName, secretCode);
                theStack.push(Rhea);
            } else if (planetName.equalsIgnoreCase("Metis") && secretCode == 2535){
                current = planetName;
                Moon Metis = new Moon(planetName, secretCode);
                theStack.push(Metis);
            } else {
                logOut = 0;
                System.out.println("You are dead.");
            }

        } else if (current.equals("Elara")){

            if (planetName.equalsIgnoreCase("Titan") && secretCode == 1232){
                current = planetName;
                Moon Titan = new Moon(planetName, secretCode);
                theStack.push(Titan);
            } else if (planetName.equalsIgnoreCase("Metis") && secretCode == 2535){
                current = planetName;
                Moon Metis = new Moon(planetName, secretCode);
                theStack.push(Metis);
            } else {
                logOut = 0;
                System.out.println("You are dead.");
            }

        } else if (current.equals("Metis")){

            if (planetName.equalsIgnoreCase("Europa") && secretCode == 9007){
                current = planetName;
                Moon Europa = new Moon(planetName, secretCode);
                theStack.push(Europa);
            } else if (planetName.equalsIgnoreCase("Elara") && secretCode == 1264){
                current = planetName;
                Moon Elara = new Moon(planetName, secretCode);
                theStack.push(Elara);
            } else if (planetName.equalsIgnoreCase("Io") && secretCode == 4792){
                current = planetName;
                Moon Io = new Moon(planetName, secretCode);
                theStack.push(Io);
                System.out.println("You have acquired the Macho Orb! Return to the Enterprise.");
            } else {
                logOut = 0;
                System.out.println("You are dead.");
            }

        } else if (current.equals("Io")){

            if (planetName.equalsIgnoreCase("Metis") && secretCode == 2535){
                current = planetName;
                Moon Metis = new Moon(planetName, secretCode);
                theStack.push(Metis);
            } else {
                logOut = 0;
                System.out.println("You are dead.");
            }

        } else {
            logOut = 0;
            System.out.println("You are dead.");

        }

    } while((!current.equals("Io")) || (logOut != 0));


}

这里的主要错误是do-while循环不会退出。该计划的前提是从一个行星跳到另一个行星,而planetName是目的地,current是您当前所在的行星。我想要的是当电流为“Io”时退出循环。每次“跳转”到另一个行星后,目的地即成为当前行星。我已经测试过了,当电流在

    if (planetName.equalsIgnoreCase("Io") && secretCode == 4792) {
        current = planetName;
        Moon Io = new Moon(planetName, secretCode);
        theStack.push(Io);
        System.out.println("You have acquired the Macho Orb! Return to the Enterprise.");
    }

然而,循环仍在继续。

共有1个答案

卫鸿朗
2023-03-14

while((!current.equals(“Io”))| |(logOut!=0));

应更改为

而((!current.equals(“Io”))

 类似资料:
  • 每次我输入东西时,这段代码都会循环。如何修复它? 这是整个事情的截图:

  • 这里是Uni learning Python编程入门课程的初学者。直到我明白了大部分,现在我很困惑。 有人能解释为什么这会产生它输出的模式吗? 外循环触发器和() 然后内部循环触发器和() 然后它不会打印(6),因为

  • 你好我已经想尽一切办法弄清楚为什么返回语句没有被识别。如果我把“回报余额”放在其他地方,它会说系统。出来无法访问println。。。你们谁能帮我解释一下为什么这可能不起作用??非常感谢。

  • 大家好,我三天前开始使用Java,我正在做一个小的银行账户项目,向用户询问他们的姓名和余额,并根据输入打印出一些消息。我的问题始于尝试验证用户名是否正确。不管怎样这是密码 //代码启动包com。首领 导入java.util.扫描仪; 公共课主课{ } 程序在要求用户输入是或否后终止,但我认为它在我第一次尝试时就起作用了。所以我不能输入那个字符串 此外,我在使用verifyName的输入来运行whi

  • 我是一个非常初级的程序员,正在上暑期班。因此,请轻松使用代码。我需要创建一个投资应用程序,计算2500美元的投资如果以每年7.5%的复利计算,需要多少年才能达到至少5000美元的价值。顺便说一下,我不知道什么是for循环。我只是想不出如何处理循环,不是方程式而是循环。请帮忙!! 这就是我目前所拥有的。

  • 如果您能帮助我完成Java类的任务,我将不胜感激。问题提示如下: 编写一个程序来读取非负整数列表并显示最大整数、最小整数和所有整数的平均值。用户通过输入一个不用于查找最大值、最小值和平均值的负哨兵值来指示输入的结束。平均值应该是双精度类型的值,以便用小数部分计算。 我在代码中遇到的问题是,运行时,循环不会完成,除非输入的第一个值为负值,在这种情况下它返回: 输入的最大数字是:0输入的最小数字是:0