# Array umgekehrt ausgeben



## babuschka (18. Aug 2009)

```
public static void main(String[] args) {
    String name; //Variable name

    String liste[]=new String[109]; //Array

    for(int i=0; i<=109; i++){
    System.out.println("Geben Sie Name ein: "); // Namen werden eingegeben
    name=Eingabe.readString(); //Name wird gelesen
  
    if(name.equals(".")||name.equalsIgnoreCase("Ende")){
    System.out.println("Eingabe beendet!");
    System.out.println("");
    for(int c=0; c<=liste.length; c++){
    System.out.printf( liste[c]);
    }
    break;
    }
else{
        liste[i]=name;
    }
    }

}
}
```

Was muss ich tun, damit Array die Liste umgekehrt ausgibt??? Danke im Voraus


----------



## 0001001 (18. Aug 2009)

```
public static void main(String[] args) {
		String name; //Variable name

		String liste[]=new String[109]; //Array

		for(int i=0; i<=109; i++){
			System.out.println("Geben Sie Name ein: "); // Namen werden eingegeben
			name=Eingabe.readString(); //Name wird gelesen

			if(name.equals(".")||name.equalsIgnoreCase("Ende")){
				System.out.println("Eingabe beendet!");
				System.out.println("");
				for(int c=liste.length-1; c<=0; c--){
					System.out.printf( liste[c]);
				}
				break;
			}
			else{
				liste[i]=name;
			}
		}
```


----------



## babuschka (18. Aug 2009)

0001001 hat gesagt.:


> ```
> public static void main(String[] args) {
> String name; //Variable name
> 
> ...



Habe es genau so gemacht geht aber leider nicht irgendwie wird jetzt die Liste überhaupt nicht mehr angezeigt?


----------



## Gastredner (18. Aug 2009)

```
for (int c=liste.length-1; c>=0; c--){
    System.out.printf( liste[c]);
}
```
Das [c]c<=0[/c] war falsch.
Übrigens ist auch die Grenze deiner ersten for-Schleife falsch gesetzt: Es muss [c]i<109[/c] heißen (oder noch besser: [c]i<=liste.length-1[/c]).


----------



## babuschka (18. Aug 2009)

```
for(int i=0;i<109; i++){
    System.out.println("Geben Sie Name ein: "); // Namen werden eingegeben
    name=Eingabe.readString(); //Name wird gelesen
  
    if(name.equals(".")||name.equalsIgnoreCase("Ende")){
    System.out.println("Eingabe beendet!");
    System.out.println("");
    for(int c=liste.length-1; c>=0; c--){
    System.out.printf( liste[c]);
    }
    break;
    }
else{
        liste[i]=name;
    }
    }

}
}
```

Was ist hier falsch? ich habs genau so gemcht wie du es mir gesagt hast das programm läuft nicht mehr ;(


----------



## Aske (18. Aug 2009)

```
public static void main(String[] args) {
        String name; //Variable name
 
        String liste[]=new String[109]; //Array
 
        for(int i=0; i<109; i++){
            System.out.println("Geben Sie Name ein: "); // Namen werden eingegeben
            name=Eingabe.readString(); //Name wird gelesen

            if(name.equals(".")||name.equalsIgnoreCase("Ende")){
                System.out.println("Eingabe beendet!");
                System.out.println("");
                for(int c=liste.length-1; c>=0; c--){
                    System.out.printf( liste[c]);
                }
                break;
            }
            else{
                liste[i]=name;
            }
        }
	}
```

Jetzt hast Du aber noch ein Problem. Wenn "Ende" eingegeben wird, bevor alle Felder des Arrays gefüllt sind, wirst Du bei der umgekehrten Ausgabe eine NullPointerException bekommen. Du solltest alle Felder des Arrays zumindest mit einem Leerstring initialisieren, oder gleich eine Arraylist verwenden.


----------



## Ark (18. Aug 2009)

Ich würde sagen, der Code hat ein ganz anderes, wesentliches Problem hinsichtlich der Struktur und der damit verbundenen Logik: Man kann die Namen nicht ausgeben, ohne welche unmittelbar davor einzugeben.

Erstes Anzeichen für ein Problem: "Eingabe beendet!" wird nicht ausgegeben, obwohl nach 109 Namen die Eingabe garantiert beendet ist.

Lösung des Problems: Code logisch aufbauen.  Die Eingabe erfolgt in einer Schleife, also ist die Eingabe erst _hinter_ der Schleife beendet.

Ark


----------

