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

有谁能帮我处理代码中的while yes/no循环吗?[副本]

申屠弘图
2023-03-14

我希望我的程序在我输入“n”或“n”后被终止,但当我这样做时,它反而不断请求更多的输入。我需要做什么来解决这个问题?

public static void main (String[] args){
    Scanner userInputReader = new Scanner(System.in);

    System.out.print("Your name: ");
    String name = userInputReader.nextLine();

    System.out.print("Gender required (M/F): ");
    char genDer = userInputReader.next().charAt(0);


    System.out.print("Your age: ");
    int age = userInputReader.nextInt();
    System.out.print("Your Resting Heart Rate: ");
    int hrRest = userInputReader.nextInt();

    double hrMax;
    double vo2Max;


    while (age > 0 && hrRest > 0 && genDer != 'M' || genDer != 'm' && genDer != 'F' || genDer != 'f') {
        while (age < 0) {
            System.out.println("Your age cannot be Negative");
            System.out.print("Please enter your age again: ");
            age = userInputReader.nextInt();
        }
        while (hrRest < 0) {
            System.out.println("Invalid resting heart rate");
            System.out.print("Please type in Your Resting Heart Rate more carefully: ");
            hrRest = userInputReader.nextInt();
        }

        while (true) {
            System.out.print("Type Y to show the results/N to stop: \n");
            char answer = userInputReader.next().charAt(0);

            if (answer == 'Y' || answer == 'y') {
                hrMax = 220 - age;
                vo2Max = 15 * (hrMax / hrRest);

                //  System.out.println("Display hrMax: " + hrMax);
                //  System.out.println("Display vo2Max: " + vo2Max);

                String typeofSports = "";
                if (genDer == 'M' || genDer == 'm') {
                    if (age >= 18 && age <= 30 && vo2Max >= 40 && vo2Max <= 60) {
                        typeofSports += "\n ---> Basketball";
                    }
                    if (age >= 18 && age <= 26 && vo2Max >= 62 && vo2Max <= 74) {
                        typeofSports += "\n ---> Cycling";
                    }
                    if (age >= 18 && age <= 26 && vo2Max >= 55 && vo2Max <= 67) {
                        typeofSports += "\n ---> Canoeing";
                    }
                    if (age >= 18 && age <= 22 && vo2Max >= 52 && vo2Max <= 58) {
                        typeofSports += "\n ---> Gymnastics";
                    }
                    if (age >= 10 && age <= 25 && vo2Max >= 50 && vo2Max <= 70) {
                        typeofSports += "\n ---> Swimming";
                    } else {
                        System.out.println("Look!!! We have calculated the final result---> \n ");
                    }
                }

                if (genDer == 'F' || genDer == 'f') {
                    if (age >= 18 && age <= 30 && vo2Max >= 43 && vo2Max <= 60) {
                        typeofSports += "\n ---> Basketball";
                    }
                    if (age >= 18 && age <= 26 && vo2Max >= 47 && vo2Max <= 57) {
                        typeofSports += "\n ---> Cycling";
                    }
                    if (age >= 18 && age <= 26 && vo2Max >= 47 && vo2Max <= 67) {
                        typeofSports += "\n ---> Canoeing";
                    }
                    if (age >= 18 && age <= 22 && vo2Max >= 36 && vo2Max <= 50) {
                        typeofSports += "\n ---> Gymnastics";
                    }
                    if (age >= 10 && age <= 25 && vo2Max >= 40 && vo2Max <= 60) {
                        typeofSports += "\n ---> Swimming";
                    } else {
                        System.out.println("Look!!! We have calculated the final result---> \n ");
                    }
                }

                System.out.println("Recommended sports are: " + typeofSports);

                // update the condition
                System.out.print("");
                name = userInputReader.nextLine();

                System.out.print("Gender required (M/F): ");
                genDer = userInputReader.next().charAt(0);


                System.out.print("Your age: ");
                age = userInputReader.nextInt();
                System.out.print("Your Resting Heart Rate: ");
                hrRest = userInputReader.nextInt();
            }
            if (answer == 'N' || answer == 'n') {
                break; // What should I put here?
            }
        }

共有1个答案

柯河
2023-03-14

你的破门而入:

while (age > 0 && hrRest > 0 && genDer != 'M' || genDer != 'm' && genDer != 'F' || genDer != 'f') {
    ...
    while(true) {
        ...
        if (answer == 'N' || answer == 'n') {
            break; // What should i put here?
        }
        ...
    }
    ...
}

仅中断嵌套的while循环while(true){...},但不中断外部循环。您可以使用return代替break,或者在外部循环中添加标志boolean stop=false;并在输入为'n''n'时设置为true,然后在外部循环中添加检查以在stop==true时再次中断。

 类似资料:
  • 我不太理解while循环中的条件,以及它代表什么'>>>='。

  • 要打印: 这不是一个家庭作业问题,我只是不能理解这个概念。

  • 其目的是对用户输入的分数进行排序、显示和平均。我还没弄明白。如果你已经解决了这个问题,请帮忙。到目前为止,我已经尝试了这段代码,但它不起作用。 我从这段代码中得到的只是一个编译器错误。有人有什么建议吗?谢谢你。

  • 免责声明:(我知道我的标题不是很有描述性,因为我甚至不知道错误发生在哪里,所以我没有太多的东西可以放在那里。) 所以,我试图写一个无用的剧本来浪费时间,结果我完全投入其中。它本来是用来制作某种便携式垃圾档案的。 在检查后,我输入密码,它只是结束,没有错误消息,它不删除文件在垃圾文件夹。

  • 我正在我的Android设备上进行实验,尝试使用应用程序代码,以便我可以同时学习它。但我对如何编辑smali代码非常着迷。对于只学过OOP语言的人来说,这并不是那么简单。 这是我的smali代码: 这是它的等效java代码: 现在我想让事情简单一些,在参数“MyProcessor”中加一个常量。Java语言中的l'I.E: 我尝试过几种不同的方法,比如: 但是我在编译错误,所以这显然是错误的。此外

  • 我对javascript还是个新手,只知道基本知识。有人能解释一下下面的代码,就像在调用init函数时发生的流中一样吗? 我对下面代码的理解是,一旦调用init函数,就会设置一个全局变量输出,该输出映射到一个带有id输出的HTML元素。然后调用。这将创建一个WebSocket对象。这之后是我不完全理解的部分。 在行中,WebSocket对象有一个名为open的属性,我们将它设置为任何返回的属性 。