Versuche seit einer Woche folgendes Problem zu lösen.
Was stimmt hier nicht?
Bekomme einfach nicht das Ergebnis der übergebenen Daten zurück.
Ich glaube das Problem liegt beim Integer... habe auch nicht ganz verstanden warum man hier Integer benutzt und nicht String. Man könnte ja mit String auch alle anderen Zeichen außer Zahlen übergeben. Ich habe keinen expliziten Konstruktor erstellt, da der Standard-Konstruktor ausreichen müsste.
Java:
publicclassLoop{privateArrayList<Integer> data;privateint sum=0;privateint count=0;publicLoop(Integer[]data){}publicintsumUp(int count){while(count<data.size()){
sum=sum+data.get(count);
count++;}System.out.println("The sum of your loop is:"+sum);}
1. Der Konstruktor heißt nicht wie die Klasse. Ist die Klasse loop oder Loop? ;-)
2. Du musst im Konstruktor die ArrayList schon auch mit den Daten befüllen. Aktuell ist der Konstruktor leer
3. Du hast in sumUp count sowohl als Parameter als auch als Klassen-Variable. Du greift dort immer auf den Parameter zu. Was soll count eigentlich sein? Ich denke count und sum sollten keine Klassenvariablen sein. Du solltest sie am Anfang der Methode deklarieren.
4. Für einen Anwendungsfall wie sumUp wüde typischer Weise eine for-Schleife zum Einsatz kommen.
5. Bitte Poste Java Code immer in Code Tags [code=java]dein code[/code], das erhöht die Lesbarkeit und damit die Chance, dass dir jemand hilft.
6. In der while-Schleifen-Bedingung greifst du auf daten zu. Dein Array heißt aber data.
Bitte die Code-Tags verwenden: Die drei Punkte rechts vom Smiley -> Code -> Java
Java:
publicclassLoop{privateArrayList<Integer> data;// der Instanzvariablen wird nie etwas zugewiesenprivateint sum=0;privateint count=0;publicloop(Integer[] data){// der Parameter "data" wird nicht verwendet}publicintsumUp(int count){while(count<daten.size()){
sum=sum+data.get(count);
count++;}System.out.println("The sum of your loop is:"+sum);}}
1. Der Konstruktor heißt nicht wie die Klasse. Ist die Klasse loop oder Loop? ;-)
2. Du musst im Konstruktor die ArrayList schon auch mit den Daten befüllen. Aktuell ist der Konstruktor leer
3. Du hast in sumUp count sowohl als Parameter als auch als Klassen-Variable. Du greift dort immer auf den Parameter zu. Was soll count eigentlich sein?
4. Für einen Anwendungsfall wie sumUp wüde typischer Weise eine for-Schleife zum Einsatz kommen.
5. Bitte Poste Java Code immer in Code Tags [code=java]dein code[/code], das erhöht die Lesbarkeit und damit die Chance, dass dir jemand hilft.
Zu 1. ou ja Case-Sensitives Java stimmt. Danke für den Hinweis
Zu 2. Wie kann ich denn eine ArrayList mit einem Array befüllen?
Zu 3. Count ist einfach die Stelle im Array {10,20,30} 10 an 1.stelle 20 an 2. stelle 30 an 3.stelle (SumUp sollte also bei einem count=2 alle Einträge bis zur 2. Stelle addieren).
zu 4. Ja mit for ist es einfacher aber wir sollen das Iterieren mit While-Schleifen und dem Iterator aus der Java Bibliothek üben.
Zu 5. Verzeihe mir bin neu. Ich achte in Zukunft drauf.
Zu 3. Count ist einfach die Stelle im Array {10,20,30} 10 an 1.stelle 20 an 2. stelle 30 an 3.stelle (SumUp sollte also bei einem count=2 alle Einträge bis zur 2. Stelle addieren).
Hier mal ein kurzes Beispiel, wie du count mit einem ListIterator verknüpfen könntest, für Summenbildung ist es ja egal in welcher Richtung die Liste durchlaufen wird.
Java:
int count =3;List<Integer> nums =Arrays.asList(2,4,6,8,10);ListIterator<Integer> iter = nums.listIterator(count);while(iter.hasPrevious()){System.out.println(iter.previous());}
Das eintragen der übergebenen Array-Werte in die ArrayList klappt soweit, ABER irgendwie klappt die while-Schleife zum Summieren der Werte nicht und das zurückgeben der Summe nicht. Bekomme immer nur den Wert an der Stelle(index) angezeigt statt der Summe aller Elemente biz zur Stelle(index).
Wo liegt mein Denkfehler? Was habe ich wieder nicht beachtet?
Code:
public class Loop {
private ArrayList<Integer>liste;
private int sum;
private int index;
public Loop(Integer[]liste1)
{
liste = new ArrayList<Integer>();
for(int index:liste1)
{
liste.add(index);
}
}
public int sumUp(int index)
{
if(index>liste.size())
{
System.out.println("Index außerhalb der Liste");
return 0;
}
while(index<liste.size())
{
sum+=liste.get(index);
index++;
}
return sum;
}
}
Immer noch kein Iterator. Und "index" als Bezeichner für den Wert (s. Konstruktor) ist auch nicht gut. Dann wäre auch noch die Frage, was sumUp nun eigentlich berechnen soll.
import java.util.*;
/**
* Beschreiben Sie hier die Klasse Loopn.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class Loop {
private ArrayList<Integer>liste;
public Loop(Integer[]liste1)
{
liste = new ArrayList<Integer>();
for(int index:liste1)
{
liste.add(index);
}
}
public int sumUp(int index)
{
int sum=0;
if(index>liste.size())
{
System.out.println("Index außerhalb der Liste");
return 0;
}
while(index<liste.size())
{
sum+=liste.get(index);
index++;
}
return sum;
}
}
Jetzt sind die Variablen lokal im Methodenkopf drin.
Zum Iterator:
ist die While-Schleife in dieser Form mit erhöhen des Indexes kein "manueller" Iterator??
also ich denke wir sollen erstmal durch die Liste ohne den Iterator der Java Bibliothek nur mit einer while-Schleife iterieren und danach den Iterator der Bibliothek benutzen.