Erste Schritte Indexe innerhalb eines Arrays zusammensählen

Z

Zukami

Mitglied
Hallo zusammen,

Ich sollte jeweils immer zwei benachbarte Indexe in einem Array miteinander addieren, sodass am Schluss nur noch ein Wert übrig bleibt.
Beispiel:
Array {1,6,4,3,2}
Schritt 1: {1+6, 6+4, 4+3, 3+2}
Schritt 2: {7 +10, 10+7, 7+5}
etc.
bis nur noch ein Wert übrig bleibt

Auf der Console sollte das folgendes Ergebnis angezeigt werden.
63
34 29
17 17 12
7 10 7 5

Dabei soll das Schlussergebnis zuerst ausgegeben werden.

Ich habe schon mehrere Ansätze versucht, aber bisher hat noch keiner so richtig geklappt.


Dies ist mein bisher "erfolgreichster" Ansatz:
Java:
public static void main(String[] args)
    {
        int array [] = {1,6,4,3,2};
        int c = 0;
        int l = array.length-1;
        arrayAddition(array,c,l);
        printArray(array);
    }
    
    public static void printArray(int[] array)
    {
    
        for ( int Wert = 0; Wert< array.length; Wert++ )
        {
            System.out.print( array[Wert] + " ");
        }
    }

    
    
    public static int arrayAddition (int[] array, int c, int l)
    {
        if (c==array.length -1)
        {
            return array [c];
        }
        else
        {
            int [] newArray = new int [l];
            newArray[c] = array [c]+ array[c+1];
            arrayAddition(array,c+1, l);
            printArray(newArray);
            System.out.println();
        }
        return l;
        
    }

Dabei wird mir folgendes auf der Console ausgegeben:
0 0 0 5
0 0 7 0
0 10 0 0
7 0 0 0
1 6 4 3 2

Somit hätte ich einen Schritt fast erreicht also die Ausgabe der 7,10,7,5 jedoch nicht ganz und ich weiss langsam nicht mehr weiter...
Mir ist bewusst, dass das return l überhaupt keinen sinn ergibt, es steht nur dort weil ich nicht weiss, was ich sonst dort hinschreiben soll....

Ich hatte auch schon die Idee in dem else Part ein newArray zu deklarieren und es dann mit den Werten von array zu füllen ( newArray[0] = array[0] + array[1])

Kann mir hier irgendwer weiterhelfen?
 
mihe7

mihe7

Top Contributor
Das kann man sich schnell überlegen:

Wenn Dein Array nur die 63 enthält, wird das Element ausgegeben.
Wenn Dein Array 34, 29 enthält, dann wird ein neues Array mit den addierten Werten erzeugt, für das arrayAddition erneut abgearbeitet werden muss. Im Anschluss wird das Array ausgegeben.

Kurz:
Code:
Falls array.length > 1 {
    x := summiertesArray(array) // ist um 1 Element kürzer als array
    arrayAddition(x)
}
print array
 
Z

Zukami

Mitglied
Mein Problem ist vor allem noch, dass wenn ich ein neues Array erstelle und denen die werte zuweise, dann aber meinen rekursiven Aufruf mache, sozusagen für jeden einzelnen Array Wert ein ein neues array erstellt wird...
 
Zuletzt bearbeitet:
Z

Zukami

Mitglied
Das kann man sich schnell überlegen:

Wenn Dein Array nur die 63 enthält, wird das Element ausgegeben.
Wenn Dein Array 34, 29 enthält, dann wird ein neues Array mit den addierten Werten erzeugt, für das arrayAddition erneut abgearbeitet werden muss. Im Anschluss wird das Array ausgegeben.

Kurz:
Code:
Falls array.length > 1 {
    x := summiertesArray(array) // ist um 1 Element kürzer als array
    arrayAddition(x)
}
print array


Vielen Dank für Deine Antwort.
Ich habe meinen Code nun folgendermassen geändert:
Code:
public static void main(String[] args)
{
int array [] = {1,6,4,3,2};
int c = 0;
int l = array.length-1;
arrayAddition(array,c,l);
printArray(array);
}

public static void printArray(int[] array)
{

for ( int Wert = 0; Wert< array.length; Wert++ )
{
System.out.print( array[Wert] + " ");
}
}



public static int arrayAddition (int[] array, int c, int l)
{
if (c==array.length -1)
{
return array [c];
}
else
{
array [c] = array [c]+ array[c+1];
return arrayAddition(array,c+1, l);

}


Der Output ist momentan 7 10 7 5 2 . Heisst der erste Schritt wäre fast korrekt aber die zwei müsste noch weg. Zudem müsste danach noch eine rekursion kommen, um es bis zu meiner abbruchbedienung durchzuführen. Aber keine meiner Ansätze funktioniert so richtig. Kannst Du mir da vielleicht noch weiterhelfen?
 
mihe7

mihe7

Top Contributor
Überleg mal kurz: Du willst ein Array summieren und anschließend das ursprüngliche Array anzeigen. Folglich musst Du eine Kopie des Arrays haben.
 
Z

Zukami

Mitglied
Überleg mal kurz: Du willst ein Array summieren und anschließend das ursprüngliche Array anzeigen. Folglich musst Du eine Kopie des Arrays haben.

so in diese richtung?

Java:
public static void main(String[] args)
    {
        int array [] = {1,6,4,3,2};
        int c = 0;
        int newArray [] = new int [array.length -1];
        arrayAddition(array,c, newArray);
        printArray(arrayAddition(array, c, newArray));
        
    }
    
    public static void printArray(int[] array)
    {
    
        for ( int Wert = 0; Wert< array.length; Wert++ )
        {
            System.out.print( array[Wert] + " ");
        }
    }
    
    public static int [] arrayAddition (int[] array, int c, int [] newArray)
    {
     if (c < array.length -1)
     {
         newArray[c] = array[c] + array[c+1];
         arrayAddition(array, c+1, newArray);
         return newArray;
     }
     array = new int [newArray.length];
     array = newArray;
     return array;
    }
 
mihe7

mihe7

Top Contributor
Nein. Fangen wir mal klein an. Schreibe eine Methode, die ein Array als Parameter erwartet, dieses in ein neues Array passender Größe aufsummiert und das neue Array als Ergebnis zurückgibt.

EDIT: Für Dein Beispiel {1,6,4,3,2} würde die Methode ein neues Array {7,10,7,5} zurückgeben.
 
Z

Zukami

Mitglied
Nein. Fangen wir mal klein an. Schreibe eine Methode, die ein Array als Parameter erwartet, dieses in ein neues Array passender Größe aufsummiert und das neue Array als Ergebnis zurückgibt.

EDIT: Für Dein Beispiel {1,6,4,3,2} würde die Methode ein neues Array {7,10,7,5} zurückgeben.

Okay habe ich soweit hinbekommen...
und wie würdest Du empfehlen weiter vorzugehen?
Java:
public static void main(String[] args)
    {
        int array [] = {1,6,4,3,2};
        int c = 0;
        int newArray [] = new int [array.length-1];
        arrayAddition(array,c,newArray);
        printArray(arrayAddition(array,c, newArray));
    }
    public static void printArray(int[] array)
    {
   
        for ( int Wert = 0; Wert< array.length; Wert++ )
        {
            System.out.print( array[Wert] + " ");
        }
    }
   
   
    public static int [] arrayAddition (int[] array, int c, int [] newArray)
    {
       
       
        if (c < array.length-1 )
        {
        newArray [c] = array[c] + array [c+1];
        arrayAddition (array, c+1, newArray);
        return newArray;
        }
       
        else
            return newArray;
        }
       
       
    }
 
Zuletzt bearbeitet:
Z

Zukami

Mitglied
hier mit dieser methode erhalte ich das neue Array (7,10,7,5)


Java:
public static int [] arrayAddition (int[] array, int c, int [] newArray)
    {
        
        
        if (c < array.length-1 )
        {
        newArray [c] = array[c] + array [c+1];
        arrayAddition (array, c+1, newArray);
        return newArray;
        }
        
        else
            return newArray;
        
        }
 
mihe7

mihe7

Top Contributor
hier mit dieser methode erhalte ich das neue Array (7,10,7,5)
OK, die Methode erstellt aber kein Array.

Ich dachte an etwas wie:
Java:
private static int[] summiereArray(int[] array) {
    int[] ergebnis = new int[array.length - 1];
    for (int i = 0; i < ergebnis.length; i++) {
        ergebnis[i] = array[i] + array[i+1];
    }
    return ergebnis;
}

Mit diesem Helferlein holen wir uns nochmal den Algorithmus für die Methode arrayAddition ins Gedächtnis:
Code:
Falls array.length > 1 {
    x := summiertesArray(array) // ist um 1 Element kürzer als array
    arrayAddition(x)
}
print array

Das lässt sich nun direkt nach Java übersetzen:
Java:
public static void arrayAddition(int[] array) {
    if (array.length > 1) {
        int[] summiertes = summiertesArray(array);
        arrayAddition(summiertes);
    }
    System.out.println(java.util.Arrays.toString(array));
}

Ist allerdings ungetestet :)
 
Z

Zukami

Mitglied
OK, die Methode erstellt aber kein Array.

Ich dachte an etwas wie:
Java:
private static int[] summiereArray(int[] array) {
    int[] ergebnis = new int[array.length - 1];
    for (int i = 0; i < ergebnis.length; i++) {
        ergebnis[i] = array[i] + array[i+1];
    }
    return ergebnis;
}

Mit diesem Helferlein holen wir uns nochmal den Algorithmus für die Methode arrayAddition ins Gedächtnis:
Code:
Falls array.length > 1 {
    x := summiertesArray(array) // ist um 1 Element kürzer als array
    arrayAddition(x)
}
print array

Das lässt sich nun direkt nach Java übersetzen:
Java:
public static void arrayAddition(int[] array) {
    if (array.length > 1) {
        int[] summiertes = summiertesArray(array);
        arrayAddition(summiertes);
    }
    System.out.println(java.util.Arrays.toString(array));
}

Ist allerdings ungetestet :)

Vielen Dank für deine Antwort.
leider wurde uns das Benutzen von Schleifen verboten und auch
System.out.println(java.util.Arrays.toString(array)); kennen wir noch nicht...
hast du noch eine andere idee, wie man das lösen könnte?
 
mihe7

mihe7

Top Contributor
Du kannst natürlich auch Deine Methoden verwenden.

Java:
    public static void summiereArray(int[] array, int c, int []newArray) {
        if (c < array.length-1 ) {
            newArray[c] = array[c] + array[c+1];
            arrayAddition(array, c+1, newArray);
        }
    }


    public static void arrayAddition(int[] array) {
        if (array.length > 1) {
            int[] summiertes = new int[array.length - 1];
            summiereArray(array, 0, summiertes);
            arrayAddition(summiertes);
        }
        printArray(array);
    }
 
Z

Zukami

Mitglied
Du kannst natürlich auch Deine Methoden verwenden.

Java:
    public static void summiereArray(int[] array, int c, int []newArray) {
        if (c < array.length-1 ) {
            newArray[c] = array[c] + array[c+1];
            arrayAddition(array, c+1, newArray);
        }
    }


    public static void arrayAddition(int[] array) {
        if (array.length > 1) {
            int[] summiertes = new int[array.length - 1];
            summiereArray(array, 0, summiertes);
            arrayAddition(summiertes);
        }
        printArray(array);
    }

cool vieeeleen dank :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Neue Werte für gleiche Array-Indexe Java Basics - Anfänger-Themen 16
T Suche ein array dass dir stets die freien indexe gibt Java Basics - Anfänger-Themen 7
J Verschieben von Buchstaben in einem String um vorgegebene Anzahl von Zeichen innerhalb eines weiteren String Java Basics - Anfänger-Themen 12
I ArrayList erstellen innerhalb einer Zeile? Java Basics - Anfänger-Themen 3
B Summe von Property innerhalb einer Liste via Lambda Java Basics - Anfänger-Themen 1
M Auf einen Array innerhalb eines Objekts zugreifen Java Basics - Anfänger-Themen 5
B Enum innerhalb einer Klasse / anderes Konzept Java Basics - Anfänger-Themen 8
dapzoo Innerhalb eines Jahres intensivem Java-Selbststudium zur Anstellung? Java Basics - Anfänger-Themen 37
S Wert innerhalb eines anderen Wertes Java Basics - Anfänger-Themen 3
T split innerhalb Klammern ignorieren? Java Basics - Anfänger-Themen 6
x-tshainge Innerhalb von Textdatei addieren Java Basics - Anfänger-Themen 9
I Try-Catch innerhalb eines Catchblocks Java Basics - Anfänger-Themen 1
J Innerhalb von Zeichenketten tauschen Java Basics - Anfänger-Themen 1
S BufferedWriter innerhalb einer Methode Java Basics - Anfänger-Themen 2
H Innerhalb einer Methode eine Variable der aufrufenden Methode ändern? Java Basics - Anfänger-Themen 2
H For-Schleife innerhalb If-Abfrage? Java Basics - Anfänger-Themen 3
A Werte innerhalb von resultset vergleichen Java Basics - Anfänger-Themen 2
B Key auslesen/ausgeben innerhalb von foreach() Java Basics - Anfänger-Themen 5
M abbruch innerhalb einer Rekursiven Schleife Java Basics - Anfänger-Themen 5
J Array innerhalb einer Funktion mehrfach iniatilisieren Java Basics - Anfänger-Themen 4
O Vererbung this innerhalb von super Java Basics - Anfänger-Themen 7
Silvascus Erste Schritte Werte innerhalb eines Arrays addieren Java Basics - Anfänger-Themen 3
L Punkt innerhalb eines Bereiches verschieben Java Basics - Anfänger-Themen 9
J Innerhalb Interfacemethode: Interface als Attribut Java Basics - Anfänger-Themen 2
I Innerhalb einer Methode suchen und hinzufügen. Neues Objekt in Suche dann? Java Basics - Anfänger-Themen 8
S Classpath: Alle .jars innerhalb eines Ordners einbinden Java Basics - Anfänger-Themen 4
M Farben/Color Abfragen von Farben innerhalb einer Methode Java Basics - Anfänger-Themen 9
T Erste Schritte run innerhalb eines package Java Basics - Anfänger-Themen 1
I Rückgabe und Aufruf einer Methode innerhalb einer anderen Methode Java Basics - Anfänger-Themen 5
B Variablen global abspeicher innerhalb von Methoden Java Basics - Anfänger-Themen 7
D Methoden Implementieren von einer Zoomfunktion innerhalb eines JPanels mit null-Layoutmanager Java Basics - Anfänger-Themen 1
M Throws Anweisung innerhalb eines Methodenkopfes unklar Java Basics - Anfänger-Themen 4
M Variablen Zugriff von außerhalb eines Blockes auf eine Variable innerhalb eines Blockes Java Basics - Anfänger-Themen 2
M Text innerhalb Anführungsstriche als "eins" auswerten Java Basics - Anfänger-Themen 5
O Files eines Directories innerhalb eines JAR-Files auflisten Java Basics - Anfänger-Themen 0
S Funktionen/Atrribute nur innerhalb einer package Zugänglich machen Java Basics - Anfänger-Themen 8
I JTextfield[] innerhalb eines Itemlistener aufrufen Java Basics - Anfänger-Themen 2
B Zufallsdatum innerhalb eines bestimmten Bereiches erzeugen Java Basics - Anfänger-Themen 3
H OOP Identifzierung eines Objektes innerhalb eines Array Java Basics - Anfänger-Themen 3
G Bewegung innerhalb eines Koordinatensystems berechnen Java Basics - Anfänger-Themen 9
P Kapselung Variable innerhalb einer inneren Klasse ansprechen ohne ein Objekt erzeugen zu müssen? Java Basics - Anfänger-Themen 6
L Next()-Aufruf zweimal innerhalb einer While-Schleife bei ListIterator Java Basics - Anfänger-Themen 10
W Methodenaufruf innerhalb einer Klasse - static vs. this Java Basics - Anfänger-Themen 3
B for-schleife innerhalb neuer Methode Java Basics - Anfänger-Themen 5
N Innerhalb des Programmes RAM einstellen Java Basics - Anfänger-Themen 2
J Variablen überschreiben innerhalb einer Klasse Java Basics - Anfänger-Themen 7
N Zugriff auf Werte in Arrays innerhalb ArrayList Java Basics - Anfänger-Themen 2
A Zugriff auf Komponente innerhalb einer JPanel Java Basics - Anfänger-Themen 8
H Innerhalb eines Package wird eine Klassenmethode nicht gefunden. Java Basics - Anfänger-Themen 2
Kaniee Zugriffe innerhalb eines Arrays Java Basics - Anfänger-Themen 9
A objekt innerhalb der gleiche klasse Java Basics - Anfänger-Themen 10
J Dateien innerhalb einer JAR verwenden Java Basics - Anfänger-Themen 3
J Innerhalb der Border zeichnen Java Basics - Anfänger-Themen 9
P Unterschied JRE innerhalb/ außerhalb des JDK Verzeichnisses? Java Basics - Anfänger-Themen 5
S Input/Output Problem mit dateizugriff innerhalb der .jar (Applet) Java Basics - Anfänger-Themen 2
K Zufällige Auswahl innerhalb eines Arrays und Arrays aus JLabel füllen Java Basics - Anfänger-Themen 32
K Bild mit Maus innerhalb eines Rahmens bewegen Java Basics - Anfänger-Themen 5
E Zeile innerhalb Datei überschreiben Java Basics - Anfänger-Themen 2
K Methoden Zustand innerhalb einer Instanz ändern Java Basics - Anfänger-Themen 2
M Java-Prog soll Texte innerhalb Bildern erkennen Java Basics - Anfänger-Themen 2
S Variablen Variable innerhalb eines if-Statements? Java Basics - Anfänger-Themen 10
N OOP Zugriff auf eine Objekt innerhalb einer Klasse aus statischen Methoden Java Basics - Anfänger-Themen 9
S Innerhalb eines Fensters ein neues erschaffen Java Basics - Anfänger-Themen 7
E Elemente innerhalb eines Arrays vergleichen Java Basics - Anfänger-Themen 7
M Main methode innerhalb von Java aufrufen Java Basics - Anfänger-Themen 11
A lokale Variable innerhalb "actionPerformed()" Java Basics - Anfänger-Themen 10
L Lokale Variable und Instanzvariable innerhalb Iterator Java Basics - Anfänger-Themen 8
M FileWriter innerhalb runnable Jar Java Basics - Anfänger-Themen 8
J Diverse Frag zu Vererbung innerhalb von Java Java Basics - Anfänger-Themen 6
O Änderungen innerhalb for-Schleife speichern Java Basics - Anfänger-Themen 17
J Wie auf eine Datei innerhalb des JAR-Files zugreifen Java Basics - Anfänger-Themen 2
radiac Datentypen RANDOM-punkt setzen INNERHALB eines BEREICHes Java Basics - Anfänger-Themen 2
T switchcase innerhalb Schleife: von case-Fall aus Schleife beenden Java Basics - Anfänger-Themen 3
L Timer innerhalb eines Threads Java Basics - Anfänger-Themen 3
H Klassen zur Anzeige ines Bildes und zum Zeichnen innerhalb diese Bildes Java Basics - Anfänger-Themen 2
D Datei innerhalb einer zip bearbeiten Java Basics - Anfänger-Themen 8
D .class-Datei innerhalb einer .jar-Datei verändern Java Basics - Anfänger-Themen 4
R Interface innerhalb einer Klasse definieren..? Java Basics - Anfänger-Themen 2
M Methode innerhalb Methode Java Basics - Anfänger-Themen 10
C Variable Zeichenkette innerhalb einer Schleife ersetzen Java Basics - Anfänger-Themen 4
Das Brot Relative Pfadangaben innerhalb von .jar Archiven Java Basics - Anfänger-Themen 7
C Textausgabe auf Panelen innerhalb eines Applets Java Basics - Anfänger-Themen 6
Screen Mouserobot clonen? Zeiger nur innerhalb eins Fensters? Java Basics - Anfänger-Themen 3
E Boolean wert innerhalb einer Tabelle ändern Java Basics - Anfänger-Themen 4
N aus .txt innerhalb eines JARs Zeilenweise lesen Java Basics - Anfänger-Themen 8
G Texte innerhalb von Dateien suchen Java Basics - Anfänger-Themen 9
D Relativer Pfad innerhalb jar Datei Java Basics - Anfänger-Themen 5
G Innerhalb von Runnable auf super. zugreifen? Java Basics - Anfänger-Themen 3
M if Abfrage innerhalb einer for-Schleife Java Basics - Anfänger-Themen 2
M if Abfrage innerhalb einer for-Schleife Java Basics - Anfänger-Themen 3
M Variablen innerhalb der properties-datei Java Basics - Anfänger-Themen 2
K Objekte innerhalb einer Klasse Java Basics - Anfänger-Themen 2
G Class innerhalb einer .jar editieren Java Basics - Anfänger-Themen 2
J Thread innerhalb einer Methode starten Java Basics - Anfänger-Themen 3
bugmenot Laden einer Resourcendatei innerhalb einer Datei. Java Basics - Anfänger-Themen 19
M Methode innerhalb einer klasse aufrufen Java Basics - Anfänger-Themen 26
A dateireferenzierung innerhalb/außerhalb des archivs Java Basics - Anfänger-Themen 2
F Verwenden von Input innerhalb eines Applets Java Basics - Anfänger-Themen 3
W Innerhalb TableModel auf aktivierte Reihe reagieren Java Basics - Anfänger-Themen 3
K innerhalb eines Strings mit RegEx matchen Java Basics - Anfänger-Themen 17

Ähnliche Java Themen

Anzeige

Neue Themen


Oben