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