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:

elisa098

Mitglied
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;
    }
}
 

Jw456

Top Contributor
Java:
int sum = 0;
for(int i=start; i< myArray.length; i+=4) {
        
     sum = sum + myArray[i];
     System.out.println("sum" + sum);
   }
 

elisa098

Mitglied
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?
 

elisa098

Mitglied
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];
    }
}
 

Jw456

Top Contributor
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.
 

elisa098

Mitglied
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];
    }}
 

Jw456

Top Contributor
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?
 

elisa098

Mitglied
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:

Ähnliche Java Themen

Neue Themen


Oben