我目前正在制作一个程序,允许您选择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;
}
}
答案 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;
声明