2017-09-29 23 views
-2

私はこの割り当てをしなければなりません。 getHighestの出力とgetLowestの結果を除いて、上手く見えます。ここに私のコードは次のとおりです。最高値と最低値の検索

KNW_CourseGradesV2クラス:

public class KNW_CourseGradesV2 implements KNW_Analyzable 
{ 
    //Declare array variable 
    private KNW_GradedActivity[] grades = new KNW_GradedActivity[4]; 
    String results; 

    /** 
    * Constructor 
    * */ 
    public KNW_CourseGradesV2() 
    { 

    } 

    public void setLab(KNW_GradedActivity lab) 
    { 
    grades[0] = lab; 
    } 

    public void setPassFailExam(KNW_GradedActivity pfe) 
    { 
    grades[1] = pfe; 
    } 

    public void setEssay(KNW_GradedActivity essay) 
    { 
    grades[2] = essay; 
    } 
    public void setFinalExam(KNW_FinalExam fe) 
    { 
    grades[3] = fe; 
    } 
    public void setTotalGrade(KNW_GradedActivity tg) 
    { 
    grades[4] = tg; 
    } 

    public String toString() 
    { 
    //Lay out all of the scores 
    return "Lab Score: " + grades[0].getScore() + 
     "\tGrade: " + grades[0].getGrade() + 
     "\nPass/Fail Exam: " + grades[1].getScore() + 
     "\tGrade: " + grades[1].getGrade() + 
     "\nEssay Score: " + grades[2].getScore() + 
     "\tGrade: " + grades[2].getGrade() + 
     "\nFinal Exam Score: " + grades[3].getScore() + 
     "\tGrade: " + grades[3].getGrade(); 
    } 

    //Find the average of the grades 
    public double getAverage() 
    { 
    double sum = 0.0; 
    double average = 0.0; 
    double total = 0.0; 

    //For loop to calc. the average 
    for(int i =0; i<grades.length; i++) 
    { 
     total =+ grades[i].getScore(); 
     average = sum/grades.length; 
    } 
    return average; 
    } 

    public KNW_GradedActivity getHighest() 
    { 
    double highest = grades[0].getScore(); 

    for(int i = 0; i < grades.length; i++) 
    { 
     if(grades[i].getScore() > highest) 
     { 
     highest = grades[i].getScore(); 
     } 
    } 

    //Created KNW_GradedActivity object to bring the highest number 
    //into the setScore method so it can be a double 
    KNW_GradedActivity gaH = new KNW_GradedActivity(); 
    gaH.setScore(highest); 
    return gaH; 
    } 

    public KNW_GradedActivity getLowest() 
    { 
    double lowest = grades[0].getScore(); 

    for(int i = 0; i < grades.length; i++) 
    { 
     if(grades[i].getScore() > lowest) 
     { 
     lowest = grades[i].getScore(); 
     } 
    } 
    //Samething here, just doing it for the lowest number 
    KNW_GradedActivity gaL = new KNW_GradedActivity(); 
    gaL.setScore(lowest); 
    return gaL; 
    } 
} 

KNW_Analyzableクラス:

public interface KNW_Analyzable 
{ 
    double getAverage(); 
    KNW_GradedActivity getHighest(); 
    KNW_GradedActivity getLowest(); 
} 

KNW_GradedActivityクラス:

public class KNW_GradedActivity 
{ 
    private double score; // Numeric score 

    /** 
     The setScore method sets the score field. 
     @param s The value to store in score. 
    */ 

    public void setScore(double s) 
    { 
     score = s; 
    } 

    /** 
     The getScore method returns the score. 
     @return The value stored in the score field. 
    */ 

    public double getScore() 
    { 
     return score; 
    } 

    /** 
     The getGrade method returns a letter grade 
     determined from the score field. 
     @return The letter grade. 
    */ 

    public char getGrade() 
    { 
     char letterGrade; 

     if (score >= 90) 
     letterGrade = 'A'; 
     else if (score >= 80) 
     letterGrade = 'B'; 
     else if (score >= 70) 
     letterGrade = 'C'; 
     else if (score >= 60) 
     letterGrade = 'D'; 
     else 
     letterGrade = 'F'; 

     return letterGrade; 
    } 
} 

そして、ここでは私が得る出力されます。私は直面している問題を示し、すべての出力を表示しません。

出力:

Average: 0.0 
Highest: [email protected] 
Lowest: [email protected]> 

が、私はこれを理解し、何が起こっているかを見つけるために約一週間のためにしようとしている、と私はそれを見つけるように見えることはできません。

+0

フアンカルロスメンドーサ、なぜ私はそれらのばかげた出力を得ていますか?私の大好きなものは何を産出しているのですか? –

+2

グレードではなく、KNW_GradedActivityを印刷しています。値を出力するには 'getScore()'を使うべきです。 – Laerte

+0

どのように画面の最高と最低を印刷していますか? – user2023608

答えて

1

あなたのメソッドが返されると、実際にはgaHgaLが返されます。両方ともKNW_GradedActivityオブジェクトです。スコアを見たい場合は、おそらくgaH.getScore()gaL.getScore()を返すべきです。

0

もう一つの選択肢は、あなたのKNW_GradedActivityクラスのtoStringメソッドをオーバーライドすることである。

@Override 
public String toString() { 
    return "{" + 
      "score=" + score + 
      ", grade='" + getGrade() + '\'' + 
      '}'; 
} 

あなたはいけない。この方法では、あなたの実際のprint文を変更する必要がありますし、あなたのスコアとグレードを組み合わせた素敵な出力を持っています。統計情報を取得するためにStreamDoubleSummaryStatisticsを使用しないのはなぜ

{スコア= 90.0、グレード= 'A'}

+0

@KyleWelchお読みください:[私の質問に誰かが答えたときにどうすればいいですか?](https://stackoverflow.com/help/someone-answers) –

1

:それはのように見えるのだろうか? APIがすべての計算を行うようにしてください:

List<KNW_GradedActivity> grades = Arrays.asList(new KNW_GradedActivity(), new KNW_GradedActivity(), new KNW_GradedActivity()); 
grades.get(0).setScore(91); 
grades.get(1).setScore(81); 
grades.get(2).setScore(71); 

DoubleSummaryStatistics statistics = grades.stream(). 
     collect(Collectors.summarizingDouble(KNW_GradedActivity::getScore)); 
System.out.println(statistics); 
// DoubleSummaryStatistics{count=3, sum=243.000000, min=71.000000, average=81.000000, max=91.000000} 
関連する問題