Få et gjennomsnitt fra antall objekter

stemmer
0

Jeg prøver å få den gjennomsnittlige score fra objekter, men kan ikke tenke på en god måte å gjøre det.

Jeg har 10 objekter, og de alle har sin egen poengsum assosiert med det.

Jeg laget setter og getter klasse der det ville få gjennomsnittet, men problemet jeg kjøre inn er at jeg ville lage noe som dette slik at selv om jeg setter objektets poengsum i denne metoden holderen vil gå tilbake til 0.

public double getAverage() {
    return average;
}

public void setAverage(double studentScore) {
    double holder = 0;

    average = holder + studentScore;
    holder = average;

    this.average = studentScore;
}

Jeg ble også tenker på bare å lage fuglehunden og getter metoder for hver enkelt score, men som tar opp mye plass, og jeg skjønte det må være en bedre måte å gjøre det.

Her er en bit av koden jeg bruker i den viktigste metoden

public static void main(String[] args) {
  final String STUDENT_INFO = HW1_Students.txt;

  List<GradeInfo> list = new ArrayList<GradeInfo>();

  Scanner inputFile = null;
  GradeInfo person1 = new GradeInfo();
  GradeInfo person2 = new GradeInfo();
  GradeInfo person3 = new GradeInfo();
  GradeInfo person4 = new GradeInfo();
  GradeInfo person5 = new GradeInfo();
  GradeInfo person6 = new GradeInfo();
  GradeInfo person7 = new GradeInfo();
  GradeInfo person8 = new GradeInfo();
  GradeInfo person9 = new GradeInfo();
  GradeInfo person10 = new GradeInfo();

  list.add(person1);
  list.add(person2);
  list.add(person3);
  list.add(person4);
  list.add(person5);
  list.add(person6);
  list.add(person7);
  list.add(person8);
  list.add(person9);
  list.add(person10);


  try {
   inputFile = new Scanner(new File(STUDENT_INFO));
  }

  catch (FileNotFoundException ex) {
   System.out.println(\n *** Exception occured while opening 
     + ex.getMessage() +  ***);
   System.exit(-1);
  }

  readData(inputFile, STUDENT_INFO, person1, person2, person3, person4,
    person5, person6, person7, person8, person9, person10);

      for (int i = 0; i < list.size(); i++) {
          System.out.println(list.get(i));
      }
}

Noen råd ville være verdsatt, takk.

Publisert på 15/09/2015 klokken 19:48
bruker
På andre språk...                            


3 svar

stemmer
1

public void setAverage(ArrayList<GradeInfo> grades) {
double average = 0;
for(int i = 0; i < grades.size(); i++){
    average += grades.get(i);
}
average = average / grades.size();
this.average = average;
}

Jeg håper dette er hva du mente å gjøre ....... Denne metoden vil ta Arraylist, og angi riktig gjennomsnittlige poengsum i den kablede "setter og getter klasse".

Svarte 15/09/2015 kl. 20:16
kilden bruker

stemmer
1

Jeg forstår ikke helt hva du prøver å gjøre her:

 public void setAverage(double studentScore) {
        double holder = 0;

        average = holder + studentScore;
        holder = average;

        this.average = studentScore;
    }

Men det er logisk at holdervil bli tilbakestilt til 0 fordi du initialisere den og sette den til 0 i begynnelse av din funksjon, eller må jeg misforstår dette? Bare lage holderutsiden av setter.

Og hvis du bare vil ha gjennomsnittet av en haug med verdier bare legge alle verdiene sammen og dele resultatet med antall / mengde dine verdier.

For eksempel:

public double getAverage(List <GradeInfo> l){
       int totalAmount;

       for(i = 0; i < l.size(); i++){
           totalAmount += l.get(i);
       }

       double average = totalAmount / l.size();
       return average;
}
Svarte 15/09/2015 kl. 20:17
kilden bruker

stemmer
0

Dette er sannsynligvis ikke aktuelt for programmet så langt som du sikkert har minst en positiv verdi å gå inn i regnestykket. Men jeg kunne se en professor tar av poeng for det hvis han er testing alle mulige tilfeller.

Hvis du følger rådene fra Sand, bør du sjekke at størrelsen på Arraylist er større enn null før du bruker størrelse i gjennomsnittsberegningen. Du kan ikke dele på null i Java. I stedet gjør dette:

public double getAverage(List <GradeInfo> l){
       int totalAmount;

       for(i = 0; i < l.size(); i++){
       totalAmount += l.get(i);
       }
       if (l.size() > 0) {
       double average = totalAmount / l.size();
       return average;
       else {
            double average = 0;
            }
            return average;
}
Svarte 15/09/2015 kl. 21:06
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more