按Enter键后命令提示冻结,无效循环

时间:2014-02-17 14:26:05

标签: java while-loop

我目前正在制作一个程序,允许您选择4个选项中的1个,为了正确执行,我必须使用循环。这个简单程序的要点是允许用户从4个选项中选择1个:

1 - 将百分比设置为平均值 2 - 输入成绩(并输入所输入成绩的平均值) 3 - 获得平均值(我假设等级平均值和平均输入百分比) 4 - 退出

目前,我没有编译错误,并且能够运行该程序。每当我输入1并按Enter键时,由于某种原因输入数字但是它只是一个空格,我必须按CTRL-C才能解冻它。我也不知道如何获得"而(选择!= 1); "行正确执行。

我需要让程序循环,允许用户根据需要多次执行每个选项,直到他们按4退出,所以我使用的是哨兵控制的循环。这是我的代码,我是初学者,所以我可能没有整个" Loop"过程进展下来。谢谢!

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;
    int choiceOne;


    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 ");
        choice = input.nextInt();


    while ( choice != 4 );

        switch ( choice )
        {

            case 1: 

            if( choice == 1 ) {     
                System.out.println( "Enter a percentage to multiply by" );
                percent = input.nextFloat();

            break;
            }

            case 2:

            if ( choice == 2 ) {
                System.out.println( "Enter grades" );
                grade = input.nextDouble();
                total = total + grade;
                gradeCounter = gradeCounter + 1;
                gradeAvg = (double) total / gradeCounter;
            break;      
            }



            case 3:

            if ( choice == 3 ) {
                System.out.println( "You have chosen to get the average" );
                totalAvg = totalAvg + percent * grade;
                totalAvg = input.nextDouble();          
            break;
            }


            default: 

            if ( choice == 4 ){
                System.out.println( "You have chosen to quit" );
                quit = input.nextInt();
            break; 
            }



        }

2 个答案:

答案 0 :(得分:1)

在每个案例之后,你应该发表一个“休息”声明。

    case 1: 

        if ( choice == 1 ) {        
            System.out.println( "Enter a percentage to multiply by" );
            percent = input.nextFloat();

所以改为:

    case 1: 

        if ( choice == 1 ) {        
            System.out.println( "Enter a percentage to multiply by" );
            percent = input.nextFloat();
            break;

这是我看到的唯一问题。如果您有任何其他问题,请回答此问题。

答案 1 :(得分:1)

我甚至不知道从哪里开始......代码中存在多个错误:

while ( choice != 4 );

删除分号并将switch包裹在{ }

if ( choice == 1 )

不需要在case内放置if语句,这是多余的

if ( choice != 4 || choice == 4 ){

总是如此,如前所述,if代码块中的case是多余的

case 1: 

if ( choice == 1 ) {        
    System.out.println( "Enter a percentage to multiply by" );
    percent = input.nextFloat();

}

在每个case代码块的末尾,您需要发出break;声明