Java 如何在while循环中实现for循环?

Java 如何在while循环中实现for循环?,java,for-loop,while-loop,nested-loops,Java,For Loop,While Loop,Nested Loops,很抱歉问这么深的问题,但我很迷茫。我正在解决一个问题,我被卡住了。我应该做一个基本的菜单驱动的计算器,可以在上限和下限之间加、减、乘、除或生成一个随机数。我没有太多的困难,但现在我需要改变它,以便在它执行一个操作后,它再次启动并显示菜单。另外,如果我输入了一个无效的响应,它需要让他们再试一次,直到他们输入一个有效的响应,除非他们连续三次输入一个无效的响应;然后,它需要显示一条关于稍后重试并退出程序的消息。这就是我被卡住的地方。在下面的代码中,我尝试了for和while的每一种组合,但我无法使其工

很抱歉问这么深的问题,但我很迷茫。我正在解决一个问题,我被卡住了。我应该做一个基本的菜单驱动的计算器,可以在上限和下限之间加、减、乘、除或生成一个随机数。我没有太多的困难,但现在我需要改变它,以便在它执行一个操作后,它再次启动并显示菜单。另外,如果我输入了一个无效的响应,它需要让他们再试一次,直到他们输入一个有效的响应,除非他们连续三次输入一个无效的响应;然后,它需要显示一条关于稍后重试并退出程序的消息。这就是我被卡住的地方。在下面的代码中,我尝试了for和while的每一种组合,但我无法使其工作。如果有人给我指点,我将不胜感激

以下是要求:

  • 菜单将重复显示,直到输入有效选项
  • 如果用户在一行中输入三个无效选项,则程序结束
  • 如果用户输入两个无效选项,然后是一个有效选项,然后是另一个无效选项,则程序不会结束
  • 程序计算每个菜单选项的正确答案
  • 通过重新显示菜单,程序在有效操作后继续
  • 当用户从菜单中选择退出选项时,程序结束 •程序不会以零除结束–只显示一条错误消息,并允许用户重试
这是我到目前为止所做的

import java.util.Scanner;

public class BasicCalculator {

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    double numONE = 0.0;
    double numTWO = 0.0;
    double upperLimit = 0.0;
    double lowerLimit = 0.0;

    System.out.println("MENU");
    System.out.println("1. +");
    System.out.println("2. -");
    System.out.println("3. *");
    System.out.println("4. /");
    System.out.println("5. Generate a random number.");
    System.out.println("6. Quit");

    System.out.println("What would you like to do?");
    int menuSelect = input.nextInt();
    //Selects an item from the menu

    if(menuSelect == 1 || menuSelect == 2 || menuSelect == 3 || menuSelect == 4){
        System.out.println("Enter first number.");
        numONE = input.nextDouble();
        //Stores input as numONE

        System.out.println("Enter second number.");
        numTWO = input.nextDouble();
        //Stores input as numTWO
    }
    if(menuSelect == 1){
        System.out.println(numONE + numTWO);
        //Adds two numbers
    }
    else if(menuSelect == 2){
        System.out.println(numONE - numTWO);
        //Subtracts second number from first number
    }
    else if(menuSelect == 3){
        System.out.println(numONE * numTWO);
        //Multiplies two numbers
    }
    else if(menuSelect == 4){
        if(numTWO != 0){
            System.out.println(numONE / numTWO);
            //Divides first number by second number
        }
        else if(numTWO == 0){
            System.out.println("I'm sorry, you cannot divide by zero.");
        }
    }
    else if(menuSelect == 5){
        System.out.println("Enter upper limit.");
        upperLimit = input.nextDouble();
        System.out.println("Enter lower limit.");
        lowerLimit = input.nextDouble();
        double randomVal = (lowerLimit + (int)(Math.random() * ((upperLimit - lowerLimit)+1)));
        System.out.println(randomVal);
        //Displays a random integer between an upper and a lower limit
    }
    else if(menuSelect==6){
        System.out.println("Goodbye");
        System.exit(0);
    }
    else{
        System.out.println("Sorry, "+menuSelect+" is not an option.");
    }
}
}

您可能不希望在while循环中使用for循环来处理此问题。我只需要一个变量来跟踪你收到了多少无效的输入,当他们输入了无效的内容时递增,如果他们输入了有效的内容,则将其重置为零,如果输入的内容太高,则将其踢出

例如:

import java.util.Scanner;
公共级基本计算器{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
双纽蒙尼=0.0;
双numTWO=0.0;
双上限=0.0;
双下限=0.0;
int无效=0;
System.out.println(“菜单”);
System.out.println(“1.+”);
系统输出打印号(“2-”;
System.out.println(“3.*);
System.out.println(“4./”);
System.out.println(“5.生成一个随机数”);
System.out.println(“6.Quit”);
System.out.println(“您想做什么?”);
int menuSelect=input.nextInt();
//从菜单中选择一个项目
while(无效<3){
如果(menuSelect==1 | | menuSelect==2 | | menuSelect==3 | | menuSelect==4){
System.out.println(“输入第一个数字”);
numONE=input.nextDouble();
//将输入存储为货币
System.out.println(“输入第二个数字”);
numTWO=input.nextDouble();
//将输入存储为numTWO
无效=0;
}
如果(菜单选择==1){
System.out.println(numONE+numTWO);
//加两个数字
}
else if(menuSelect==2){
System.out.println(numONE-numTWO);
//从第一个数字中减去第二个数字
}
else if(menuSelect==3){
System.out.println(numONE*numTWO);
//乘以两个数字
}
else if(menuSelect==4){
如果(numTWO!=0){
系统输出打印LN(numONE/numTWO);
//将第一个数除以第二个数
}
else if(numTWO==0){
System.out.println(“对不起,你不能被零除。”);
}
}
else if(menuSelect==5){
System.out.println(“输入上限”);
上限=input.nextDouble();
System.out.println(“输入下限”);
lowerLimit=input.nextDouble();
double randomVal=(lowerLimit+(int)(Math.random()*((上限-lowerLimit)+1));
System.out.println(randomVal);
//显示上限和下限之间的随机整数
无效=0;
}
else if(menuSelect==6){
System.out.println(“再见”);
系统出口(0);
}
否则{
System.out.println(“对不起,+menuSelect+”不是一个选项。”);
无效的++;
}
}
System.out.println(“无效输入太多,请稍后再试”);
}
}

您可能不希望在while循环中使用for循环来处理此问题。我只需要一个变量来跟踪你收到了多少无效的输入,当他们输入了无效的内容时递增,如果他们输入了有效的内容,则将其重置为零,如果输入的内容太高,则将其踢出

例如:

import java.util.Scanner;
公共级基本计算器{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
双纽蒙尼=0.0;
双numTWO=0.0;
双上限=0.0;
双下限=0.0;
int无效=0;
System.out.println(“菜单”);
System.out.println(“1.+”);
系统输出打印号(“2-”;
System.out.println(“3.*);
System.out.println(“4./”);
System.out.println(“5.生成一个随机数”);
System.out.println(“6.Quit”);
System.out.println(“您想做什么?”);
int menuSelect=input.nextInt();
//从菜单中选择一个项目
while(无效<3){
如果(menuSelect==1 | | menuSelect==2 | | menuSelect==3 | | menuSelect==4){
System.out.println(“输入第一个数字”);
numONE=input.nextDouble();
//将输入存储为货币
System.out.println(“输入第二个数字”);
numTWO=input.nextDouble();
//将输入存储为numTWO
无效=0;
}
如果(菜单选择==1){
System.out.println(numONE+numTWO);
//加两个数字
}
else if(menuSelect==2){
System.out.println(numONE-numTWO);
//从第一个数字中减去第二个数字
}
else if(menuSelect==3){
System.out.println(numONE*numTWO);
//乘以两个数字
}
否则(menuSelect==4){
我
import java.util.Scanner;

public class BasicCalculator {

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    double numONE = 0.0;
    double numTWO = 0.0;
    double upperLimit = 0.0;
    double lowerLimit = 0.0;
    int invalid = 0;

    System.out.println("MENU");
    System.out.println("1. +");
    System.out.println("2. -");
    System.out.println("3. *");
    System.out.println("4. /");
    System.out.println("5. Generate a random number.");
    System.out.println("6. Quit");

    System.out.println("What would you like to do?");
    int menuSelect = input.nextInt();
    //Selects an item from the menu

    while(invalid < 3){
    if(menuSelect == 1 || menuSelect == 2 || menuSelect == 3 || menuSelect == 4){
        System.out.println("Enter first number.");
        numONE = input.nextDouble();
        //Stores input as numONE

        System.out.println("Enter second number.");
        numTWO = input.nextDouble();
        //Stores input as numTWO
        invalid = 0;
    }
    if(menuSelect == 1){
        System.out.println(numONE + numTWO);
        //Adds two numbers
    }
    else if(menuSelect == 2){
        System.out.println(numONE - numTWO);
        //Subtracts second number from first number
    }
    else if(menuSelect == 3){
        System.out.println(numONE * numTWO);
        //Multiplies two numbers
    }
    else if(menuSelect == 4){
        if(numTWO != 0){
            System.out.println(numONE / numTWO);
            //Divides first number by second number
        }
        else if(numTWO == 0){
            System.out.println("I'm sorry, you cannot divide by zero.");
        }
    }
    else if(menuSelect == 5){
        System.out.println("Enter upper limit.");
        upperLimit = input.nextDouble();
        System.out.println("Enter lower limit.");
        lowerLimit = input.nextDouble();
        double randomVal = (lowerLimit + (int)(Math.random() * ((upperLimit - lowerLimit)+1)));
        System.out.println(randomVal);
        //Displays a random integer between an upper and a lower limit
        invalid = 0;
    }
    else if(menuSelect==6){
        System.out.println("Goodbye");
        System.exit(0);
    }
    else{
        System.out.println("Sorry, "+menuSelect+" is not an option.");
        invalid++;
    }
    }
    System.out.println("Too many invalid inputs. Try again later");
}
}
int invalidOptions = 0;
while ( invalidOptions < 3 ) {

    // show menu
    displayMenu();

    // read option
    int input = readInput();

    // validate input
    if ( isInputValid(input) ) {
        // check whether the user wants to exit or not
        if (input == EXIT_INPUT) {
            break;
        }

        // handle other commands
        handleInput(input);
    } else {
        // input is invalid
        invalidOptions++;
    }
}
int unvalid = 0;
while (unvalid < 3)
{
  //read stuff
  if ([stuff is valid])
  {
    unvalid = 0;
  }
  else
  {
    unvalid++;
  }
}
import java.util.Scanner;

public class BasicCalculator {

public static void main(String[] args) {

    int counter_WrongAttempts = 0;    // <- new code
    boolean flag_Quit = false;        // <- new code
    while (!flag_Quit) {              // <- new code
        boolean wrongAttempt = false; // <- new code


        Scanner input = new Scanner(System.in);

        double numONE = 0.0;
        double numTWO = 0.0;
        double upperLimit = 0.0;
        double lowerLimit = 0.0;

        System.out.println("MENU");
        System.out.println("1. +");
        System.out.println("2. -");
        System.out.println("3. *");
        System.out.println("4. /");
        System.out.println("5. Generate a random number.");
        System.out.println("6. Quit");

        System.out.println("What would you like to do?");
        int menuSelect = input.nextInt();
        //Selects an item from the menu

        if(menuSelect == 1 || menuSelect == 2 || menuSelect == 3 || menuSelect == 4){
            System.out.println("Enter first number.");
            numONE = input.nextDouble();
            //Stores input as numONE

            System.out.println("Enter second number.");
            numTWO = input.nextDouble();
            //Stores input as numTWO
        }
        if(menuSelect == 1){
            System.out.println(numONE + numTWO);
            //Adds two numbers
        }
        else if(menuSelect == 2){
            System.out.println(numONE - numTWO);
            //Subtracts second number from first number
        }
        else if(menuSelect == 3){
            System.out.println(numONE * numTWO);
            //Multiplies two numbers
        }
        else if(menuSelect == 4){
            if(numTWO != 0){
                System.out.println(numONE / numTWO);
                //Divides first number by second number
            }
            else if(numTWO == 0){
                System.out.println("I'm sorry, you cannot divide by zero.");
            }
        }
        else if(menuSelect == 5){
            System.out.println("Enter upper limit.");
            upperLimit = input.nextDouble();
            System.out.println("Enter lower limit.");
            lowerLimit = input.nextDouble();
            double randomVal = (lowerLimit + (int)(Math.random() * ((upperLimit - lowerLimit)+1)));
            System.out.println(randomVal);
            //Displays a random integer between an upper and a lower limit
        }
        else if(menuSelect==6){
            System.out.println("Goodbye");
            System.exit(0);
            flag_Quit = true;                                  // <- new code
        }
        else{
            System.out.println("Sorry, "+menuSelect+" is not an option.");
            wrongAttempt = true;                               // <- new code
        }


        if (wrongAttempt)                                      // <- new code
            counter_WrongAttempts++;                           // <- new code
        else                                                   // <- new code
            counter_WrongAttempts = 0;                         // <- new code
        flag_Quit = flag_Quit || (counter_WrongAttempts >= 3); // <- new code

    }
}
}
import java.util.Scanner;

public class BasicCalculator {

  public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    double firstNumber = 0.0;
    double secondNumber = 0.0;

    //New variable
    int errors = 0;

    while (errors < 3) {
        System.out.println("MENU");
        System.out.println("1. +");
        System.out.println("2. -");
        System.out.println("3. *");
        System.out.println("4. /");
        System.out.println("5. Generate a random number.");
        System.out.println("6. Quit");

        System.out.println("What would you like to do?");
        System.out.print("> ");
        int menuSelect = input.nextInt();
        //Selects an item from the menu

        if(menuSelect == 1 || menuSelect == 2 || menuSelect == 3 || menuSelect == 4) {
            errors = 0;
            System.out.print("Enter first number: ");
            firstNumber = input.nextDouble();
            //Stores input as the firstNumber

            System.out.print("Enter second number: ");
            secondNumber = input.nextDouble();
            //Stores input as the secondNumber
        }
        if(menuSelect == 1){
            System.out.println(firstNumber + secondNumber);
            //Adds two numbers
        }
        else if(menuSelect == 2){
            System.out.println(firstNumber - secondNumber);
            //Subtracts second number from first number
        }
        else if(menuSelect == 3){
            System.out.println(firstNumber * secondNumber);
            //Multiplies two numbers
        }
        else if(menuSelect == 4){
            if(secondNumber != 0){
                System.out.println(firstNumber / secondNumber);
                //Divides first number by second number
            }
            else if(secondNumber == 0){
                System.out.println("I'm sorry, you cannot divide by zero.");
            }
        }
        else if(menuSelect == 5){
            errors = 0;
            System.out.print("Enter upper limit: ");
            firstNumber = input.nextDouble();
            System.out.print("Enter lower limit: ");
            secondNumber = input.nextDouble();
            double randomVal = (firstNumber + (int)(Math.random() * ((firstNumber - secondNumber)+1)));
            System.out.println(randomVal);
            //Displays a random integer between an upper and a lower limit
        }
        else if (menuSelect==6){
            System.out.println("Goodbye");
            System.exit(0);
        }
        else{
            errors++;
            System.out.println("Sorry, "+ menuSelect + " is not an option.");
        }
    }       
    input.close();
    System.out.println("Program will exit now");
  }
}