2014-02-17 4 views
2

У меня есть программа, которая позволит пользователю выбрать один из 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; 


     } 

    } 


} 
+0

Вы не обновили 'choice' внутри цикла. – herohuyongtao

+0

Хороший стиль оставить пробел после 'if',' while', 'for' и' switch', но не внутри скобок (например, '' if (flag) ', но не' if (flag) '. – SimonT

ответ

4

Вы должны назначить choice внутри петли, а не снаружи. Ваш текущий код устанавливает его один раз и больше не изменяет.

+0

Хорошо, я переместил его внутри цикла (я редактировал код), но я все еще получаю ту же проблему:/ – user3304333

+0

Теперь это не цикл, но когда я ввожу число и нажимаю Enter, он просто помещает новое пространство ниже номер, который я ввел. Это не сохранение ввода и возвращение пользователя в меню выбора. – user3304333

+0

@ user3304333: Вы все еще печатаете меню за пределами цикла. – NPE

0

Это -> choice = input.nextInt(); Должно быть внутри -> while (choice! = 4) в самом конце.

Смежные вопросы