Array rückwärts auslesen

Cybey

Neues Mitglied
Hi alle,

habe gerade seit rund 6 Wochen Java, also bitte nicht fertig machen wenn ich ein paar "dumme Fragen" stelle. 😉
Zur Zeit stehe ich vor folgendem Problem:

Ich möchte ein Programm schreiben, bei dem ich eine unbestimmte Anzahl von Zeichen eingebe und diese danach in umgekehrter Reihenfolge wieder printe. Bei der Eingabe von 'x' oder 'X' gilt die Eingabe als beendet und die Zeichenkette wird ausgegeben.
Da ich gerade Felder als neues Thema habe, dachte ich daran dies auch so zu lösen. Mein Lösungsansatz sieht wie folgt aus:

Java:
import Prog1Tools.IOTools;

public class p16
{
    public static void main (String [] args)
    {
        
        boolean beenden = false;
        char z;
        int a = 1, b=0, c=0;
        
        // Initialiserung von Feldern
        char []    zeichenfeld;
        zeichenfeld = new char[b];
        
        
        // Kopf des Programms
        System.out.println ("===============================");
        System.out.println ("Invertierer (iterative Version");
        System.out.println ("===============================");
                
                for (b=0; beenden == false; b = b+1)
                    {
                        zeichenfeld = new char[b+1];
                        System.out.print ((b+1) + ". Zeichen: ");
                        z = IOTools.readChar ();
                        zeichenfeld[b] = z;
                        
                        switch (z)
                          {
                        case 'x':
                        case 'X':
                        beenden = true;
                        break;
                          }
                    }
        for (c = zeichenfeld.length; c >= 0; c = c-1)
            {
                System.out.print (zeichenfeld[c]);
            }
    }
}


Anmerkungen:

In der Zeile 24 lege ich praktisch ein neues Feld an, obwohl ich eigentlich nur die Länge verändern möchte. Ob es einen passenden Befehl dafür gibt weiß ich leider nicht. ???:L

Geht das nur mit einem zweidimensionalen Feld? Wenn ja: wie?

Eine Lösung mit Arrays wäre mir sehr wichtig (sollte ich ja üben), daher bitte wenn möglich auch eine passende Lösung, auch wenn es auf anderem Wege vielleicht viel leichter ginge.


Vielen Dank schonmal! 🙂
 
In der Zeile 24 lege ich praktisch ein neues Feld an, obwohl ich eigentlich nur die Länge verändern möchte. Ob es einen passenden Befehl dafür gibt weiß ich leider nicht. ???:L
nein, arrays sind statisch d.h. man kann ihre Länge nach der Initialisierung nicht mehr verändern.

Geht das nur mit einem zweidimensionalen Feld? Wenn ja: wie?
Das bringt eigentlich keine Vorteil.

Eine Lösung mit Arrays wäre mir sehr wichtig (sollte ich ja üben), daher bitte wenn möglich auch eine passende Lösung, auch wenn es auf anderem Wege vielleicht viel leichter ginge.
Eine Möglichleit wäre eine Maximale Länge festzulegen bzw. vorher nach der gewünschten Eingabelänge zu fragen. Im Moment überschreibst du ja die Werte im Array immer wieder. Wenn du mit einer größeren Länge arbeiten willst musst du das Array in in ein größeres kopieren (System (Java 2 Platform SE v1.4.2)).
 
Okay danke euch beiden, das wollte ich wissen. 😉
Wenn ich einfach ein Feld mit der Länge 100 anlege ist es kein Problem, nur eben mit der "hochzählenden" Länge scheint es nicht zu funktionieren.
 
Oder so:

Java:
String chars = "";
                for (b=0; beenden == false; b = b+1)
                    {
                        
                        System.out.print ((b+1) + ". Zeichen: ");
                        z = IOTools.readChar();
                        chars += z;
                        
                        switch (z)
                          {
                        case 'x':
                        case 'X':
                        beenden = true;
                        break;
                          }
                    }
                
                zeichenfeld = chars.toCharArray();

😉
 

Neue Themen


Zurück
Oben