2014-03-07 2 views
-3

사용자로부터 입력을 받아 최저 할당 등급을 떨어 뜨린 다음 몇 가지 등급을 선택하고 평균을 계산해야하는 수업에 대한 과제가 있습니다. 모든 일을 마쳤지 만 마지막 단계는 사용자에게 다른 학생을 위해 프로그램을 반복할지 묻는 것입니다. 내가 가지고있는 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 
} 
} 
+0

디버거로 무엇을 배우면서 무엇을 배웠습니까? –

+0

do ... while 루프의 목적은 적어도 한번은 실행하는 것입니다 ... – Solace

+0

다음 학생과 함께 뛰기 전에'sum'을 0으로 되돌려 놓는 것을 잊지 마십시오. –

답변

0

again 변수가 범위를 벗어났습니다. this을 확인하십시오. 수정 전에 루프 앞에 again을 선언하는 것입니다.

관련 문제