tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
JA
ANTWORTEN
28
ZUGRIFFE
5544
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    hornylist hornylist ist offline Mitglied Bronze
    Registriert seit
    Jun 2007
    Beiträge
    36
    vom prinzip her klar,
    ich muss mein array hald immer teilen bis die länge 1 is.... aber wenn ich ein array der länge 1000 hab, dann muss ich ja erst 2 machen der länge 500 dann wieder 2 der länge 250 usw... und was für den fall dass ich die länge meines ursprungsarrays nicht weiß? wie soll ich dann die länge der teilarrays bestimmen?
     

  2. #17
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Du kennst die länge deines Arrays immer, weil du diese Abfragen kannst mit array.length.

    Ich hatte dir die komplette Lösung schon in worten gesagt, du musst es nur noch in Java-Code schreiben. Ich bin jetzt bis morgen weg, also kann heute auch nicht mehr antworten.

    MFG

    zEriX
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  3. #18
    hornylist hornylist ist offline Mitglied Bronze
    Registriert seit
    Jun 2007
    Beiträge
    36
    und mit welcher methode füllst du die arrays wieder? mit arrays.copyof oder system.arraycopy? was is da zu empfehlen? geht sich leichter auch oder?
     

  4. #19
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Du kannst doch einfach

    Code :
    1
    
    einArray[0] = nochEinArray[0]

    machen

    MFG

    zEriX
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  5. #20
    hornylist hornylist ist offline Mitglied Bronze
    Registriert seit
    Jun 2007
    Beiträge
    36
    hab das ganze jetzt anders gelöst...
    aber danke für deine hilfe!
     

  6. #21
    limago limago ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Ort
    Riedstadt (Hessen)
    Beiträge
    354
    Warum ein neues Array? Mach es doch nicht komplizierter als es ist.

    Gruss

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    package de.tutorials;
     
    public class ArraySplitter {
        
        double myArray [] = {1,2,3,4,5,6,7,8,9,10,11};
        
        ArraySplitter() {
            System.out.println(sum(this.myArray));
        }
        
        
        public double sum(double[] myArray) {
            
            return sumHelper(myArray,0,myArray.length-1);
        }
        
        private double sumHelper(double [] array, int start, int end) {
            
            if (start == end) return array[start];
            int mitte = (end - start) /2;
            return sumHelper(array, start, start + mitte) + sumHelper(array ,start + mitte + 1, end);
        }
     
     
        public static void main(String[] args) {
            new ArraySplitter();
        }
     
    }
     
    I didn't write this; a very complex macro did.

  7. #22
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    @limago

    so funktioniert es natürlich auch.
    Hatte mir keine zu großen Gedanken gemacht und das war die erste Lösung die mir dann so in den Kopf kam.

    MFG

    zEriX
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  8. #23
    BlauerElefant BlauerElefant ist offline Grünschnabel
    Registriert seit
    Dec 2011
    Beiträge
    4
    Ja ich weiß der Threat ist alt. Stehe aber vor dem gleichen Problem und die vorgeschlagene Lösung ist mir zu komplex. Ich habe mich mal selber drangesetzt und was gebastelt allerdings funktioniert das ganze noch nicht. Hat jemand eine Idee?

    Code :
    1
    
     
    Geändert von BlauerElefant (30.12.11 um 21:52 Uhr)
     

  9. #24
    limago limago ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Ort
    Riedstadt (Hessen)
    Beiträge
    354
    Hi,

    ich weiss zwar nicht warum Deine Lösung einfacher sein soll als meine, aber Dein Fehler ist

    int mitte = (anfang + ende) / 2;

    Es muss heißen:

    int mitte = (ende - anfang) / 2;

    dann passt es.

    Guten Rutsch....
     
    I didn't write this; a very complex macro did.

  10. #25
    BlauerElefant BlauerElefant ist offline Grünschnabel
    Registriert seit
    Dec 2011
    Beiträge
    4
    Erstmal danke. Leider ist das noch nicht die Lösung des Problems. Das Programm läuft leider noch nicht.
     

  11. #26
    limago limago ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Ort
    Riedstadt (Hessen)
    Beiträge
    354
    Kannst Du das mal präzisieren. Ich habe Deinen Code kopiert und laufen lassen. Dies hat erwartungsgemäß zu einem Stapelüberlauf geführt. Danach habe ich wie beschrieben den Code geändert und siehe da, alles hat funktioniert. Also beschreibe doch mal Deinen Fehler und poste ggf. die Fehlermeldung und Deinen neuen Code.
     
    I didn't write this; a very complex macro did.

  12. #27
    BlauerElefant BlauerElefant ist offline Grünschnabel
    Registriert seit
    Dec 2011
    Beiträge
    4
    Also die Fehlermeldung lautet folgendermaßen:

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
    at Teile.teile(Teile.java:17)
    at Teile.teile(Teile.java:25)
    at Teile.teile(Teile.java:25)
    at Teile.teile(Teile.java:25)
    at Teile.teile(Teile.java:25)
    at Teile.teile(Teile.java:25)
    at Teile.teile(Teile.java:25)
    at Teile.teile(Teile.java:25)
    at Teile.teile(Teile.java:25)
    at Teile.teile(Teile.java:25)
    at Teile.teile(Teile.java:25)
    at Teile.teile(Teile.java:25)
    at Teile.teile(Teile.java:25)
    at Teile.teile(Teile.java:25)
    at Teile.main(Teile.java:6)
    Geändert von BlauerElefant (30.12.11 um 21:51 Uhr)
     

  13. #28
    limago limago ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Ort
    Riedstadt (Hessen)
    Beiträge
    354
    Äh, also die Subtraktion ist nicht kommuntativ. "(anfang - ende) / 2" ist nicht dasselbe wie "(ende - anfang) / 2". In Deinem Fall ist das Ergebnis negativ. Deswegen auch der Arrayunterlauf....

    Debuggen oder mal die Werte ausgeben hilft oft ungemein.

    Guten Rutsch.
     
    I didn't write this; a very complex macro did.

  14. #29
    BlauerElefant BlauerElefant ist offline Grünschnabel
    Registriert seit
    Dec 2011
    Beiträge
    4
    Oh man Kleinigkeit übersehen. Danke, hast mir den Tag gerettet.

    Ebenfalls guten Rutsch.
     

Ähnliche Themen

  1. Array teilen
    Von pflaster999 im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 14.06.09, 17:03
  2. überdimensionales array teilen
    Von Lobedan im Forum PHP
    Antworten: 2
    Letzter Beitrag: 13.06.09, 00:50
  3. in C ein Array mit For aufsummieren...
    Von Zorrtis im Forum C/C++
    Antworten: 11
    Letzter Beitrag: 21.10.08, 11:56
  4. Array nach bestimmten Muster teilen
    Von Breuker im Forum PHP
    Antworten: 6
    Letzter Beitrag: 03.04.07, 12:30
  5. Antworten: 5
    Letzter Beitrag: 12.12.03, 16:13