2016-10-09 6 views
0

그래서 최저 학년이 아닌 평균, 최고 학년, 최저 학년 및 평균을 계산하는 프로그램이 있습니다. 그래서 저급이 아닌 새로운 평균을 결정하는 나의 방법에 대해서는 그 방법 내에서 이미 발견 된 가장 낮은 등급을 사용하고 싶습니다.하나의 방법에서 다른 방법으로 변수 보내기

private static double min = 0.0; 

public static double lowestGrade(double[] grades) { 
    // Set min and return its value. 
    return min = DoubleStream.of(grades).min().getAsDouble(); 
} 

public static double averageWOLowGrade(double[] grades) { 
    return DoubleStream.of(grades).filter(x -> x != min) 
            .average() 
            .getAsDouble(); 
} 

곰을 염두에두고 실행 문제의 순서는 여기에 :

/** 
* lowestGrade() - method will return lowest grade 
* @return lowGrade 
*/ 
public static double lowestGrade(double[] grades) { 

    double lowGrade = 100.0; 

    // for loop that goes through grades array and stores 
    // first grade found as highest grade 
    for (int i = 0; i < grades.length; i++) { 

     // if statement will determine true lowest grade 
     if (grades[i] < lowGrade) { 
      lowGrade = grades[i]; 
     } 
    } 

    // Output 
    return lowGrade; 
} 

/** 
* averageWOLowGrade() - method will calculate average without lowest grade 
* @return newAverage 
*/ 
public static void averageWOLowGrade(double[] grades) { 
    double newAverage = 0; 
} 
+1

스토어 필드에서 가장 낮은 등급 : 하나 실행에 모든 결과를 계산? – beatngu13

+0

배열에 두 개 이상의 값이 가장 낮은 값인 경우 어떻게됩니까? 그 중 하나 또는 전부를 제외 시키시겠습니까? 예 : 입력은 '2, 5, 2, 8, 2'이고, 참 평균은 '3.8'이다. 당신은 2 중 하나를 제외하고 있습니까? 'average = (5 + 2 + 8 + 2)/4 = 4.25'이거나 2를 모두 제외하고 있습니까? 'average = (5 + 8)/2 = 6.5'? – Andreas

+0

문제가 해결되면 가장 좋은 답변을 수락하십시오. 그렇지 않은 경우 질문을 편집하여 최대한 개선하십시오. – beatngu13

답변

0

로서 당신은 필드에서 가장 낮은 점수를 저장할 수 before을 언급했다. 오히려 정적 변수에서 상태를 관리하는 대신 값을 두 번 계산하고 싶습니다. 또는 더 나은 :

public static Stats computeStats(double[] grades) { 
    double min, max; 
    min = max = grades[0]; 
    double sum = 0.0; 

    for (double grade : grades) { 
     if (grade < min) { 
      min = grade; 
     } else if (grade > max) { 
      max = grade; 
     } 
     sum += grade; 
    } 

    double avg = sum/grades.length; 
    int len = 0; 
    sum = 0.0; 

    for (double grade : grades) { 
     if (grade != min) { 
      sum += grade; 
      len++; 
     } 
    } 

    return new Stats(min, max, avg, sum/len); 
} 

static class Stats { 
    public final double min; 
    public final double max; 
    public final double avg; 
    public final double avgWithoutMin; 

    Stats(double min, double max, double avg, double avgWithoutMin) { 
     this.min = min; 
     this.max = max; 
     this.avg = avg; 
     this.avgWithoutMin = avgWithoutMin; 
    } 
} 
+0

설명이없는 코드는 도움이되지 않습니다. – Andreas

+0

@Andreas 사실, 그것을 고쳤습니다. – beatngu13