Java 成绩计算器赢得';循环时不执行

Java 成绩计算器赢得';循环时不执行,java,do-while,Java,Do While,我有一个课堂作业,要求我们接受用户的输入,去掉最低的作业分数,然后再多拿几个分数,计算平均值。我已经完成了所有这些,但最后一步是我们必须询问用户是否希望为其他学生重复该程序。我的do while循环将不会执行 import java.util.Scanner; public class CalculateGrades{ public static void main(String [] args){ Scanner sc = new Scanner (System.in);

我有一个课堂作业,要求我们接受用户的输入,去掉最低的作业分数,然后再多拿几个分数,计算平均值。我已经完成了所有这些,但最后一步是我们必须询问用户是否希望为其他学生重复该程序。我的
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
}
}
import java.util.Scanner;
公共类计算器{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
双倍得分;
双和=0;
最低双倍=100;
做{
//作业等级
对于(int i=1;i=80){
System.out.println(“您的加权平均值为“+avg+”,字母等级为B”);
}
否则如果(平均值>=70){
System.out.println(“您的加权平均值为“+avg+”,字母等级为C”);
}
否则,如果(平均值>=60){
System.out.println(“您的加权平均数为“+avg+”,字母等级为D”);
}
否则{
System.out.println(“您的加权平均值为“+avg+”,字母等级为F”);
}
System.out.println(“您想为其他学生计算吗?按1表示是,或按任意键终止”);
int再次=sc.nextInt();
}而(同样=1);
//下一个学生重置金额
}
}

您的
变量再次超出范围。检查。修复方法是在循环之前再次声明

通过使用调试器逐步执行此操作,您学到了什么?do…while循环的全部目的是至少运行一次…在与下一个学生一起运行之前,不要忘了将
sum
设置回零。因为在
do while
循环之外,我再也看不到
了,我看不出它是如何编译的,更不用说运行了。另外,请不要在最初不是这样的情况下将代码分成多个短行。只要语法突出显示正确且清晰易读,就可以让代码长行运行。@ADTC我猜“不会执行”是“不会编译”的必然结果。