Wo ist mein Fehler

  • Halllo ich habe da ein kleine Problem beim Programmieren mit arrays,
    hier die aufgabe und meine quellcode:
    Implementiert in der Methode arrays( int n ) in der zuvor genannten Klasse Übung04
    folgende Schritte:
    1. Deklariert drei Arrays a, b und c mit jeweils n Elementen vom Datentyp int.
    2. Setzt die Werte im Array a, so dass jedes Element seine Position im Array als Wert
    hat. D.h. das erste Element an Position 0 den Wert 0, das zweite Element an Position
    1 den Wert 1, u.s.w., bis zum n-ten Element an Position n - 1 mit dem Wert n - 1.
    3. Setzt die Werte im Array b, so dass es eine Kopie der Werte im Array a in umgekehrter
    Reihenfolge enthalt. D.h. das erste Element in b hat den Wert n - 1, und das letzte
    den Wert 0.
    4. Multipliziert die Elemente der beiden Arrays a und b und speichert das Ergebnis im
    Array c, d.h. ai * bi =ci
    5. Gebt den Inhalt von a, b und c auf der Konsole aus.


    dazu habe ich jetzt erst mal folgendes geschrieben:


    public class Übung04{
    public static void arrays( int n ){


    int[] a=new int [ n ];
    int[] b=new int [ n ];//java.util.Arrays.copyOf(a, a.length);
    int[] c=new int [ n ];
    for ( int i = 0; i < n; i++ ){
    a[i]=i;
    System.out.println( a[i] );}

    for ( int i=n-1; i >= 0; --i){
    b[i]=i;
    System.out.println( b[i] );}


    }
    }
    nun möchte ich den aufgabenteil 4.) machen aber wegen den forschleifen und den {} sind ja nur darin b[i] bzw a[i] implementiert,
    wo ist da nun mein fehler kann mir da vielleicht jemadn dabei helfen??

  • okey
    aber ich weiß nicht wie ich das schreiben soll, das ist ja genau mein Problem...
    ich hatte mal es so gedacht aber da ist sicher ein fehler
    c[i]=a[i]*b[i];
    System.out.println( c[i] );
    aber da kommt ein fehler
    "cannot find symbol variabl i"
    vielleicht weißt du da ja weiter


  • Das i ist nur innerhalb der Schleife deklariert.

  • ja aber ich habe ja einmal die b[i] bestimmt die dann so z.b. aussieht:
    4,3,2,1,0
    und die a[i] sieht ja da so aus 0,1,2,3,4
    dann kommen bei mir aber andere werte heraus wie sie herauskommen wollten
    da liegt mein fehler auch noch....
    ich verstehe das nicht er weiß ja nur so lange eine for-schleife "läuft" was passiert danach ist ja die schleife vorbei...
    ich hoffe du verstehst was ich meine??

  • das liegt daran weil du b von hinten durchgehst und a von vorne(beim abspeichern der int werte), du sagst:
    a[0]=0,a[1]=1 etc
    b[4]=4,b[3]=3 etc
    --> a und b schaun genau gleich aus


    ja genau aber wenn du in der for schleife was speicherst was für die ganze methode gilt(also nach dem beginn der methode deklariert ist) dann kannst du in der gesamten methode drauf zugreifen zb a,b,c.

  • stimmt danke jetzt habe ich es verstanden,
    und wie kann ich jetzt meinem compiler noch sagen das die ergebnisse vielleicht nebeneinander oder hintereinander ausgegeben werden sollen??
    das wäre noch super, aber ich denke ich habs solnagsam verstanden
    schon mal 10000 dank

  • okey ich habe also nun meinen quellcod wiefolgt hier stehen und da ist aber ein kleiner fehler drin beim berechnen von c
    public static void arrays( int n ){


    int[] a=new int [ n ];
    int[] b=java.util.Arrays.copyOf(a, a.length); //new int [ n ];
    int[] c=new int [ n ];

    System.out.println("Hier die Ausgabe des Arrays a");
    for ( int i = 0; i < n; i++ ){
    a[i]=i;
    System.out.println( a[i]+" " );}
    System.out.println("");

    System.out.println("Hier die Ausgabe des Arrays b");
    for ( int i=n-1; i >= 0; --i){
    b[i]=i;
    System.out.println( b[i] );}
    System.out.println("");

    System.out.println("Hier die Ausgabe des Arrays c");
    for (int i=0;i<n;i++){
    c[i]=a[i]*b[i];
    System.out.println( c[i] );}
    }
    und zwar wenn ich n=3 nehme dann ist ja
    a=0,1,2
    b=2,1,0
    dann müsste ja c=0,1,0 sein da kommt aber bei mir raus
    c=0,1,4 wie kann ich den fehler noch beheben??

  • Versuchs mal so:


    Viele Menschen sind zu gut erzogen, um mit vollem Mund zu sprechen,
    aber sie haben keine Scheu, es mit leerem Kopf zu tun.
    (Orson Welles)



  • hf

    In theory there is no difference between theory and practice. In practice there is.

  • hf

    wenn man zum fuellen von 'b' wirklich 'a' verwendet, dann kommt man um 2 for ned rum. so gings auch in einer:

    Code
    for ( int i=0; i < n; i++)
            {
                    a[i] = i;
                    b[i] = n-i-1;
                    c[i] = a[i] * b[i];
                    //printing
            }

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!