Hallo alle zusammen,
bin ein ziemlich blutiger Java-Neuling und habe ein Problem mit oben stehendem Programm.
Hier erstmal mein Quellcode:
Mein Problem liegt nun direkt in der Rückgabe der ersten Methode, "MaxSubProb". Ich möchte hier nämlich nicht nur den Maximalwert eines Teilarrays zurückgeben, sonderen auch den Anfangs- und Endindex.
Da aber natürlich nur eine Rückgabe möglich ist hab ich mir überlegt die drei Werte die ich haben möchte in ein neues Array zu schreiben und diesen dann zurückzugeben.
Nun ist also meine Frage wie ich diese drei Werte aus meinen if-Klammern herausbekomme.
Versuche ich einfach am Ende der Methode besagtes neues Array zurückzugeben sagt er mir, daß er die beiden Variablen "mleft" und "mright" nicht kennt.
Schreibe ich mein "return" direkt in die if-Klammern sagt er mir: missing return statement.
Und wenn ich am Ende der Methode eine weitere Rückgabe hinzufüge überschreibt er mir einfach alles, was ich vorher hätte zurückgeben wollen.
Wie kann ich denn anders an die drei Variablen "mleft", "mright" und "MaxSumme" herankommen, um sie später für meine main und print methode zu benützen?
Hoffe mir kann jemand helfen, denn ich bin langsam am verzweifeln.
MfG D.J.
bin ein ziemlich blutiger Java-Neuling und habe ein Problem mit oben stehendem Programm.
Hier erstmal mein Quellcode:
Java:
public class MaxSubProb{
public static int[] MaxSubProb(int [] a){
int MaxSumme = -9999999; //MaxSumme := -unendlich
for(int left = 0; left <= a.length; left++){
for(int right = left; right <= a.length; right++){
int Summe = 0;
for(int i = left; i < right; i++){
Summe = Summe + a[i];
}
if(Summe > MaxSumme){
MaxSumme = Summe;
int mleft = left;
int mright = right;
int [] rückgabe = {MaxSumme, mleft, mright -1};
System.out.println(mleft + ", " + mright);
return rückgabe;
}
}
}
//int [] leer = {}; //liefert nur Nullen zurück
//int [] rückgabe = {MaxSumme, mleft, mright -1}; //kennt mleft & mright hier nicht
//return MaxSumme; //Rückgabe von mleft & mright fehlen
//return null; //liefert ebenfalls nur Nullen
}
public static void print(int []rückgabe /*int MaxSumme*/, int []a){
System.out.println("Berechnung zu nachstehender Folge:");
for(int i = 0; i < a.length; i++){
System.out.print(a[i] + ", ");
}
System.out.println();
System.out.println("Die maximale Teilsumme ist: " + rückgabe[0]); // ...+ rückgabe[0]
System.out.println();
}
public static void main(String[] args){
int [] c;
c = new int [10];
for(int i = 0; i < 10; i++){
c[i] = Integer.parseInt(args[i]);
}
int [] b = {31, -41, 59, 26, -53, 58, 97, -93, -23, 84};
print(MaxSubProb(b), b);
print(MaxSubProb(c), c);
}
}
Mein Problem liegt nun direkt in der Rückgabe der ersten Methode, "MaxSubProb". Ich möchte hier nämlich nicht nur den Maximalwert eines Teilarrays zurückgeben, sonderen auch den Anfangs- und Endindex.
Da aber natürlich nur eine Rückgabe möglich ist hab ich mir überlegt die drei Werte die ich haben möchte in ein neues Array zu schreiben und diesen dann zurückzugeben.
Nun ist also meine Frage wie ich diese drei Werte aus meinen if-Klammern herausbekomme.
Versuche ich einfach am Ende der Methode besagtes neues Array zurückzugeben sagt er mir, daß er die beiden Variablen "mleft" und "mright" nicht kennt.
Schreibe ich mein "return" direkt in die if-Klammern sagt er mir: missing return statement.
Und wenn ich am Ende der Methode eine weitere Rückgabe hinzufüge überschreibt er mir einfach alles, was ich vorher hätte zurückgeben wollen.
Wie kann ich denn anders an die drei Variablen "mleft", "mright" und "MaxSumme" herankommen, um sie später für meine main und print methode zu benützen?
Hoffe mir kann jemand helfen, denn ich bin langsam am verzweifeln.
MfG D.J.