Werte der Ausgabe eines Arrays in einen Wert schreiben, wo die Werte addiert werden.

elisa098

Mitglied
3D1F82F8-C716-4320-A484-E528891D61DB_4_5005_c.jpeg
Hallo, ich habe bei folgenden Code ein Problem. Ich möchte wie obe sum 1, sum5, sum 9, sum5 als Ausgabe, jedoch zusammen addiert in eine Ausgabe. Also als Ausgabe dann den Wert 20. Wie funktioniert dies?



Java:
public class A1_main {

    public static void main(String[] args) {
        int start = 1;
        int[] myArray = { 6, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -20, -23, 5 };
        System.out.println(number(myArray, start));

    }

    public static int number(int[] myArray, int start) {
        if (start > myArray.length) {
            return myArray[0];
        }

        for (int i = start; i < myArray.length; i += 4) {

            int sum = myArray[i];

            System.out.println("sum" + sum);
        }

        if (start < (myArray.length - myArray.length)) {
            return myArray[0];
        }
        return 0;
    }
}
 
Zuletzt bearbeitet:
stimmt danke, müsste so besser sein.

Java:
public class A1_main {

    public static void main(String[] args) {
        int start = 1;
        int[] myArray = { 6, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -20, -23, 5 };
        System.out.println(number(myArray, start));

    }

    public static int number(int[] myArray, int start) {
        if (start > myArray.length) {
            return myArray[0];
        }

        for (int i = start; i < myArray.length; i += 4) {

            int sum = myArray[i];

            System.out.println("sum" + sum);
        }

        if (start < (myArray.length - myArray.length)) {
            return myArray[0];
        }
        return 0;
    }
}
 
Java:
int sum = 0;
for(int i=start; i< myArray.length; i+=4) {
        
     sum = sum + myArray[i];
     System.out.println("sum" + sum);
   }
 
Danke, ja das funktioniert jetzt mit sysout. Jedoch will ich stattdessen noch ein return Statement für sum haben, dafür funktioniert aber noch nicht?
 
Habe das probiert, als Ausgabe erhalte ich aber nur den Wert 6, weiß leider nicht, wo der Fehler liegt? Die Ausgabe müsste 20 sein.
Danke für die Hilfe.
Java:
public static void main(String[] args) {
        int start = 0;
        int[] myArray = { 6, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -20, -23, 5 };
        System.out.println(number(myArray, start));

    }

    public static int number(int[] myArray, int start) {

        int sum = 0;
        if (!(start > myArray.length && start < myArray.length)) {
            for (int i = start; i < myArray.length; i += 4) {
                sum += myArray[i];
                return sum;
            }
        }
        return myArray[0];
    }
}
 
Java:
return myArray[0];// was gibst du hier zurück und was willst du zurückgeben.

Das return in der for muss weg.
Nach dem ersten durchlauf
beenest du so die Methode. Das willst du nicht.
 
Danke, jetzt funktioniert es zum Teil. Für die Werte die größer als die Array Länge (bspw. 30) oder kleiner als 0 ist, sollte jedoch myArray[0] ausgegeben werden und nicht 0. Wie kann ich dies umsetzen?

Java:
public class A1_main {

    public static void main(String[] args) {
        int start = 30;
        int[] myArray = { 6, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -20, -23, 5 };
        System.out.println(number(myArray, start));

    }

    public static int number(int[] myArray, int start) {

        int sum = 0;
        if (!(start > myArray.length && start < myArray.length)) {
            for (int i = start; i < myArray.length; i += 4) {
                sum += myArray[i];
            }
                return sum;
        }
        return myArray[0];
    }}
 
Java:
if (!(start > myArray.length && start < myArray.length))

//denke über diese Zeile nach
Macht die das was du willst.
Teste es

Du willst größer Array ende und keiner 0 ausschließen.
Tust du das auch?
 
Eine der beiden Bedingungen ist immer false somit ist das Und immer false
Negiert ist es immer true dein IF.
Super es funktioniert, danke. Ich verstehe jedoch nicht, warum bei UND der Wert 0 zurückgegeben wurde u. warum man jetzt genau ODER braucht .
Denn theoretisch stimmt für Start =30 die If Bedingung start!<0 und dann müsste sum ja ausgegeben werden. Es wird aber myArray[0] zurückgegeben, was auch richtig ist. Ich verstehe es aber noch nicht ganz warum.
 
Zuletzt bearbeitet:

Zurück
Oben