# Summe aller Vielfachen von 3 oder 5 unter 1000.



## hos15 (3. Jan 2017)

Hallo Liebe Java Freunde , 

Ich muss ein Mini-Projekt für das Modul "Programmieren " Programmieren. Ich habe mir dieses Problem ausgesucht: "Finden Sie die Summe aller Vielfachen von 3 oder 5 unter 1000."
Das Problem ist ich darf diese Aufgabe nicht einfach so lösen wie es mir passt sondern muss das Anwenden was im Modul Programmieren beigebracht wurde. 
Eines der Themen war LinkedList (Stacks etc.). Ich habe versucht diese Aufgabe mit LinkedList zu lösen. Meine Idee: 

Mein Code soll eine Liste enthalten da sollen alle zahlen von 1-1000 sein. Es soll überprüft werden wenn eine zahl kein vielfache von der zahl 3 oder 5 ist soll soll diese aus der Liste entfernt werden. Am Ende sollen die zahlen die übrig geblieben sind aus meiner Liste addiert werden. 


Mein Code: 

```
import java.util.LinkedList;

public class Vielfachevon3und5 {

    int N = 1000;

    public static void main(String[] args) {
        Vielfachevon3und5 b1 = new Vielfachevon3und5();

        b1.prüfen();
    }

    public void prüfen() {
        LinkedList list = new LinkedList();
        for (int i = 1; i < 1000; i++) {
            list.add((i));
            if(i % 3 != 0 || i % 5 != 0){
                list.remove(i);
            }
           

        }

        System.out.println(list);
    }

}
```

Meine Liste mit den Zahlen 1-1000 wird erstellt jedoch werden die zahlen die keine Vielfache von 3 und 5 sind nicht entfernt. Als fehlermeldung bekomme ich : 

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
    at java.util.LinkedList.checkElementIndex(Unknown Source)
    at java.util.LinkedList.remove(Unknown Source)
    at ProjektEuler.Vielfachevon3und5.prüfen(Vielfachevon3und5.java:20)
    at ProjektEuler.Vielfachevon3und5.main(Vielfachevon3und5.java:12)


----------



## Cromewell (3. Jan 2017)

Ich verstehe nicht, wieso du erst alle hinzufügst und dann die falschen wieder raus nimmst?
Prüfe doch vor dem hinzufügen zur Liste, ob es ein Vielfaches ist, wenn ja, dann hinzufügen 

PS: wenn du die Methode static machts, brauchst du kein Objekt der Klasse zu erstellen


----------



## hos15 (3. Jan 2017)

OMG :O Wie Dumm ich bin :O 
Das habe ich gemacht un das klappt Danke ! 
Aber wieso kann ich keine elemente entfernen ? 
und nun wie addiere ich am besten die Zahlen in der Liste ? gibt es dafür eine extra Methode ?


----------



## Cromewell (3. Jan 2017)

Wenn du den Typ von der List bei Object belassen willst, dann kannst du es so machen:

```
int sum = 0;
for (Object i: list){
    sum += (int) i;
}
System.out.println(sum);
```


----------



## hos15 (3. Jan 2017)

Ok viele Dank  

Kennst du vllt ein Problem aus Projekt Euler wo  vererbung angebracht wäre ?


----------



## Cromewell (3. Jan 2017)

Ich habe die mal bis 10 gemacht und dann aus Zeitmangel, vielleicht auch ein Umschwung meiner Interesse, auf etwas anderes , nicht mehr weiter. Bis dort brauchte ich keine Vererbung, soviel kann ich sagen


----------



## stg (3. Jan 2017)

hos15 hat gesagt.:


> Aber wieso kann ich keine elemente entfernen ?





hos15 hat gesagt.:


> list.add((i));


Hier fügst du einen Integer mit dem WERT *i* hinzu.


hos15 hat gesagt.:


> list.remove(i);


aber hier entfernst du den Eintrag in der Liste an der STELLE *i*

Schon beim ersten Schleifendurchlauf "knallt es" deswegen. Du fügst eine 1 hinzu, diese 1 steht dann an Position 0. Anschließend willst du das Element an Stelle 1 entfernen, aber da steht noch gar nichts in der Liste!


----------



## hos15 (3. Jan 2017)

Danke !


----------

