【发布时间】:2014-03-07 02:16:13
【问题描述】:
我有一个班级作业,要求我们接受用户的输入,去掉最低的作业成绩,然后再拿几个成绩,计算平均值。我已经完成了所有这些,但最后一步是我们必须询问用户是否要为另一个学生重复该程序。 do while 循环我不会执行。
import java.util.Scanner;
public class CalculateGrades{
public static void main(String [] args){
Scanner sc = new Scanner (System.in);
double score;
double sum=0;
double lowest=100;
do{
//ASSIGNMENT GRADES
for(int i=1;i<=5;i++){
System.out.println("enter grade for assignment " +i);
score=sc.nextDouble();
sum=sum+score;
if(score<lowest){
lowest=score;
}
}
sum=sum-lowest;
double assignmentAvg= sum/4;
System.out.println("After the lowest grade is dropped, your assignment average is " + assignmentAvg);
//EXAM GRADES
System.out.println("enter grade for exam one");
double exam1=sc.nextDouble();
System.out.println("enter grade for exam two");
double exam2=sc.nextDouble();
//LAB GRADE
System.out.println("enter grade for lab");
double lab= sc.nextDouble();
//FINAL EXAM GRADE
System.out.println("enter grade for final exam");
double Final=sc.nextDouble();
//AVERAGE
double avg= (assignmentAvg*.2)+(exam1*.15)+(exam2*.2)+(lab*.2)+(Final*.25);
if(avg >=90){
System.out.println("Your weighted average is " + avg + " and your letter grade is A");
}
else if(avg >=80){
System.out.println("Your weighted average is " + avg + " and your letter grade is B");
}
else if(avg >=70){
System.out.println("Your weighted average is " + avg + " and your letter grade is C");
}
else if(avg >=60){
System.out.println("Your weighted average is " + avg + " and your letter grade is D");
}
else{
System.out.println("Your weighted average is " + avg + " and your letter grade is F");
}
System.out.println("Would you like to calculate for another student? Press 1 for yes, or any key to terminate");
int again= sc.nextInt();
}while(again==1);
// for next student reset sum
}
}
【问题讨论】:
-
通过调试器逐步完成,您学到了什么?
-
do...while 循环的全部目的是至少运行一次...
-
在与下一个学生一起跑步之前,不要忘记将
sum设置为零。 -
因为我在
do-while循环之外看不到again,所以我什至看不到它是如何编译的,更不用说运行了。另外,请不要将原本不是这样的代码分成多行。只要语法高亮正确并且是清晰。 -
@ADTC 我猜“不会执行”是“不会编译”的必然结果。