2013-03-10 2 views
1

도와 주셔서 감사합니다. 여기 자바 배열을 사용하여 최소 및 최대

는 할당입니다 :

컴퓨터 기술 강사 10 명의 작은 클래스를 가지고있다. 강사는 2 개의 중간 고사 및 최종 시험을 실시하여 수업 중 학생들의 성적을 평가합니다. 강사가 중간 성적 1의 10 학년을 입력하고이 숫자를 배열에 저장하도록하는 프로그램을 작성하십시오. 다음으로 중간 학기 2의 10 학년을 물어보고 다른 번호에이 번호를 저장하십시오. 다음으로 최종 시험의 10 개 학년을 묻는 메시지를 표시하고이를 다른 배열에 저장하십시오. 다음으로 midterm1을 midterm2에 Final을 추가하고 합계를 다른 배열에 저장하십시오. 다음으로 합계가있는 배열을 스캔하고 최소 등급과 최대 등급을 확인하십시오. 강사에게 최소 등급과 최대 등급을 알려주십시오.

두 개의 굵은 구는 내가 문제가있는 곳입니다. 모든 것은 최소 등급과 최대 등급을 제외하고 작동합니다.

가장 높은 시험 점수는 다음과 같습니다 : (276) 가장 낮은 시험 점수는 다음과 같습니다

249 내 코드는 여기에만 65에서 100 사이의 숫자를 입력 한 후, 나를 알 것입니다 :

import java.util.Scanner; 

public class Arrays { 
    public static void main(String[] args) { 
     // Create a scanner 
     Scanner input = new Scanner(System.in); 
// Prompt for the 1st mid term 
    int [] midTerm1 = new int[10]; 
    int [] midTerm2 = new int[10]; 
    int [] finalExam = new int[10]; 
    int [] grades = new int[10]; 

    for (int i = 0; i < midTerm1.length; i++){ 
     System.out.println("Enter the 10 Mid Term 1 grades: "); 
     midTerm1[i] = input.nextInt(); 
    } 

    // Prompt for the 2nd mid term 


    for (int i = 0; i < midTerm2.length; i++){ 
     System.out.println("Enter the 10 Mid Term 2 grades: "); 
     midTerm2[i] = input.nextInt(); 
    } 


    // Prompt for Final grades 


    for (int i = 0; i < finalExam.length; i++){ 
     System.out.println("Please enter a Final Exam grade: "); 
     finalExam[i] = input.nextInt(); 
    } 



    for (int i = 0; i < grades.length; i++){ 
     grades[i] = (midTerm1[i] + midTerm2[i] + finalExam[i]); 
    } 

    int minGrade = grades[0]; 
    int maxGrade = grades[0]; 

    for (int i = 0; i < grades.length; i++) 

    { 
    if (minGrade > grades[i]) 
     minGrade = grades[i]; 
    if (maxGrade < grades[i]) 
     maxGrade = grades[i]; 

    } 


    System.out.print("The highest test score is: " + maxGrade); 
    System.out.print("The lowest test score is: " + minGrade); 

} 
} 

답변

4

편집 :

grades[i] = (midTerm1[i] + midTerm2[i] + finalExam[i]); 

코드는 실제로 정확한 수 있습니다. 세 가지 시험 점수를 합산하기 때문에 성적이 65 - 100 사이가 아니라 195 - 300 사이가되도록하십시오.

65와 100 사이의 숫자를 원하면 3으로 나눠야합니다. : 성적을 정상화에

grades[i] = (midTerm1[i] + midTerm2[i] + finalExam[i])/3; 

또는 다른 사람은 다른 방법을 찾을 수 있습니다. 예를 들어, 최종 경우 등급의 50 %는 당신이 할 수 있습니다 :

grades[i] = (25 * midTerm1[i] + 25 * midTerm2[i] + 50 * finalExam[i])/100; 

그러나 다시 현재의 솔루션은 사실 정확한 수 있습니다.

+0

지침에 따르면 최소 및 최대 65 ~ 100 사이 여야합니다. 그것은 합계가 원하는 방식으로 평균화되거나 가중되기를 원하는 것처럼 보이지 않습니다. –

+0

@AlliK : 감사합니다. 그렇습니다. 그렇기 때문에 제 대답을 편집하고 마지막 현재 행을 추가 한 것입니다. –

+1

@Christf는 지시 사항을 기반으로 코드가 정확하다는 것을 깨닫지 못하기 때문에 그냥 지적하려고했습니다. min과 max에 대한 코드가 맞습니다. –