У меня есть программа, которая позволит пользователю выбрать один из 4 вариантов, после чего программа выполнит этот выбор и вернется в меню из 4 вариантов. По какой-то причине он бесконечно проводит выбор, который они выбирают. Если я вхожу в 1, он продолжает просить процент и не возвращается в меню, и я действительно не знаю, как я могу это исправить. Я просмотрел несколько бесконечных сообщений цикла, но все еще имею проблемы. Вот код.В то время как цикл не работает нормально, бесконечный цикл?
import java.util.Scanner;
public class ExerciseThree
{
public static void main (String[] argsv)
{
float percent = 0;
double grade = 0;
double totalAvg = 0;
double total = 0;
double gradeAvg = 0;
int gradeCounter = 0;
int quit;
int choice = 0;
Scanner input = new Scanner (System.in);
System.out.println("Please choose one of the following: \n 1 - Set percentage of total for new grades \n 2 - Enter new grades \n 3 - Get average \n 4 - Quit ");
while (choice != 4) {
choice = input.nextInt();
switch (choice)
{
case 1:
System.out.println("Enter a percentage to multiply by");
percent = input.nextFloat();
break;
case 2:
System.out.println("Enter grades");
grade = input.nextDouble();
total = total + grade;
gradeCounter = gradeCounter + 1;
gradeAvg = (double) total/gradeCounter;
break;
case 3:
System.out.println("You have chosen to get the average");
totalAvg = totalAvg + percent * grade;
totalAvg = input.nextDouble();
break;
default:
System.out.println("You have chosen to quit");
quit = input.nextInt();
break;
}
}
}
Вы не обновили 'choice' внутри цикла. – herohuyongtao
Хороший стиль оставить пробел после 'if',' while', 'for' и' switch', но не внутри скобок (например, '' if (flag) ', но не' if (flag) '. – SimonT