Sumowanie wyników z odrębnych arraylist

0

Witam, szukam podpowiedzi jak zsumować wynik trzech średnich z trzech osobnych arraylist, z góry dziękuje :)

0
Michał Gabor napisał(a):

Witam, szukam podpowiedzi jak zsumować wynik trzech średnich z trzech osobnych arraylist, z góry dziękuje :)

Każda najdalsza podróż zaczyna się od pierwszego kroku.
Co już zrobiłeś?

0

@Michał Gabor:
Mógłbyś dać więcej szczegółów? Masz problem z policzeniem średniej? Jeśli nie, to zakładam, że Masz metodę przyjmującą, ArrayList i zwracającą średnią, float - zsumowanie trzykrotnego wywołania takiej funkcji jest trywialne.

2
  1. Liczyć średnie dla każdej z 3 list
  2. Dodajesz te średnie
  3. ?
  4. Profit!
0

Dziękuje z góry wszystkim za pomoc, uczę się dopiero, musze stworzyć program który:

stwórz program z użyciem HashMap, który będzie przechowywał dane uczniów oraz ich ocen.
Program ma wyświetlać średnią arytmetyczną ocen każdego ucznia.

Wiem już że szedłem w złym kierunku, tworze:

class Gradess, a w nim liste do której mam przypisywać zmienne oceny i dwie metody jedna która dodaje do listy oceny i druga która liczy średnią z tych ocen.

na surowo mam costakiego"

import java.util.;
import java.lang.
;
import java.io.*;

class Students {

private String name;
private String surname;
private String number;

public Students(String name, String surname, String number) {
    this.name = name;
    this.surname = surname;
    this.number = number;
}

@Override
public String toString() {
    return name + " " + surname + " (" + number + ")";
}

}

class Grades {

List<Double> grades = new ArrayList<>();   

void addGrade(Double grade)  {
    grade.add(grades1);
}

//double getAverge()

}

class Application {

public static void main (String[] args) {
    
    Students student1 = new Students("Jhon", "Nowhere", "number 1234"); 
    Students student2 = new Students("Mike", "Kavinsky", "number 1235"); 
    Students student3 = new Students("Kim", "Kubrick", "number 1236"); 
    
    Grades grades1 = new Grades();
    grades1.addGrade(3.0);
    grades1.addGrade(5.0);
    grades1.addGrade(2.0);
    grades1.addGrade(4.0);
    Grades grades2 = new Grades();
    grades2.addGrade(5.0);
    grades2.addGrade(6.0);
    Grades grades3 = new Grades();
    grades3.addGrade(3.0);
    grades3.addGrade(5.0);
    grades3.addGrade(5.0);
    
    HashMap<Students, Grades> allGrades = new HashMap<Students, Grades>();
    allGrades.put(student1, grades1);
    allGrades.put(student2, grades2);
    allGrades.put(student3, grades3);
    
        for(Map.Entry<Students, Grades> entry : allGrades.entrySet()) {
            System.out.println("Student " + entry.getKey() + " have grades " + entry.getValue());
        }       
        for(Map.Entry<Students, Grades> entry : allGrades.entrySet()) {
            System.out.println("Student " + entry.getKey() + " have grades averge " + entry.getValue());
        }        
}

}

1

No dobra, a umiesz w pętle for lub w stream API? Ale zakładam że najpierw for, dopiero później Streamy.

0

Przyswajam pętle właśnie na takich przykładach jak ten.

0

Mentor dał mi podpowiedz, w takiej formie że w klasie Grades ma być tylko jedno pole i tutaj dał "List<Double> grades = new ArrayList<>();" a następnie metody dodające oceny i liczące średnią.

1

No dobra, to podpowiem tak. Potrzebujesz tylko pęti for, jednej zmiennej pomocniczej (lokalnej w metodzie od wyliczenia średniej) i metody size() z ArrayList

0

List<Integer> grade1 = new ArrayList<>();

	int max = grade1.get(0);
	int min = grade1.get(0);
	double sum = 0;
	for (int n = 0; n < grade1.size(); n++) {
	    int element = grade1.get(n);
	    sum += element;
	}
	double avg1 = (sum - max - min) / (grade1.size());

cos takiego mniej więcej?

2

Nie, nie wiem po co ten min i max.I wykorzystaj for each a nie zwykłe for.

0

Nic nie kumam, jak mogę stworzyć do tego co mam metodę doliczającą oceny i liczącą średnią? zupełnie tego nie widzę niestety.

1

No musisz w tej metodzie zrobić zmienną pomocniczą sum, później w for each https://www.geeksforgeeks.org/for-each-loop-in-java/ po kolei dodawać każdy double to sum czyi sum+=grade i na koniec podzielić sum/grades.size(). A najpierw sprawdzić czy grades jest puste, bo jak jest puste to trzeba od razu zwrócić np. 0

1 użytkowników online, w tym zalogowanych: 0, gości: 1