Eingabe verkehrt ausgeben

Lieger

Mitglied
Hi Leute,
Ich bin aktuell dran ein Programm zu schreiben, dass die zahlen die man eingibt, rückwärts auslesen soll. (Die Aufgabe ist aus einem Buch)

Doch wenn ich mit dem Zahlen-Eingeben aufhören möchte, funktioniert mein Übergang zur Ausgabe-Schleife nicht.

Hier der Code:

Java:
import java.util.Scanner;
import Prog1Tools.IOTools;
public class Verkehrte_Ausgabe {
	public static void main (String args[])
	{
		System.out.println("Dieses Programm liest die von dir eingegebenen Zahlen rückwärts aus.");
		int i = 0;
		int k = 1;
		
		int[] feld1 = null;
		int[] feld2;
		
		
		for (String julian = null;julian != "Ja" ; i++ , k++)
		{
			feld1 = new int[k];
			feld2 = new int[k];
			System.out.println("Deine Zahl:");
			feld1[i] = IOTools.readInteger();
			System.out.println("Beenden?");
			Scanner Eingabe = new Scanner (System.in);
			julian = Eingabe.nextLine();
		}
		
		for (int j = k; -1 < j; j-- )
		{
			System.out.println(feld1[j]);
		}
	}
}

Egal was ich eingebe, es kommt weiter "Deine Zahl?"


Ihr seht, ich bin noch ein totaler Anfänger... hoffentlich blamiere ich mich hier nicht.

Wäre nett wenn mir jemand helfen könnte.
Danke im Voraus

Gruss
Lieger
 

Lieger

Mitglied
Gemacht, geht leider immer noch net.
Der Fehler:
Exception in thread "main" java.lang.NullPointerException
at Verkehrte_Ausgabe.main(Verkehrte_Ausgabe.java:14)

Mit meinen bescheidenen Kenntnissen stelle ich fest, dass in Zeile 14 etwas nicht so ist, wie es sein sollte, aber was?

Der neue Code:

Java:
import java.util.Scanner;
import Prog1Tools.IOTools;
public class Verkehrte_Ausgabe {
	public static void main (String args[])
	{
		System.out.println("Dieses Programm liest die von dir eingegebenen Zahlen rückwärts aus.");
		int i = 0;
		int k = 1;
		
		int[] feld1 = null;
		int[] feld2;
		
		
		for (String julian = null; !julian.equals("Ja") ; i++ , k++)
		{
			feld1 = new int[k];
			feld2 = new int[k];
			System.out.println("Deine Zahl:");
			feld1[i] = IOTools.readInteger();
			System.out.println("Beenden?");
			Scanner Eingabe = new Scanner (System.in);
			julian = Eingabe.nextLine();
		}
		
		for (int j = k; -1 < j; j-- )
		{
			System.out.println(feld1[j]);
		}
	}
}
 
B

Beni

Gast
"julian" ist im ersten Durchlauf der Schleife null, und deshalb kannst du nicht "julian.equals" aufrufen. Versuchs mal mit
Java:
!"Ja".equals( julian )

P.S. "julian" ist kein guter Name für eine Variable. Ein guter Name sagt etwas über die Variable aus, besser wäre z.B. "newestUserInput".
 

Lieger

Mitglied
Danke für deine Antwort.
Mit den variablennamen hast du Recht, mir fiel nix ein, und was macht man da? Eigener Name :)
Aber ich werde in Zukunft darauf achten.
 

Lieger

Mitglied
Soo, nun funktioniert jedenfalls der obere teil des Programms.
Bei der Ausgabeschleife tritt diese Fehlermeldung auf:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Verkehrte_Ausgabe.main(Verkehrte_Ausgabe.java:26)

Ich denke , dass die untere Schleife die initialisierung von feld1 in der ersten Schleife nicht übernimmt, und sich auf das "null" ganz am Anfang bezieht.

Stimmt das so?
Wie löse ich das Problem?

(Sorry nochmal, dass ich euch hier mit solchen Anfängerfragen zuspamme, aber ich will nicht ewigs an dieser Aufgabe rumhocken, so dass mir der ganze Spass an der Sache abhandenkommt)
 

Phash

Top Contributor
Debug ist dein Freund.

wann tritt der Fehler auf? Wenn du nichts eingibst oder wenn du sofort Ja eingibst?

Ich wuerde dir hier eine do-While-Schleife empfehlen, damit ist sichergestellt, dass mindestens ein Durchgang stattfindet.


Du erzeugst in jedem Durchgang ein neues Int-Array der groesse k...
dann schreibst du an die k. Stelle die Eingabe.
Da das Array neu ist, sind alle stellen die du vorher belegt hast leer - null.


Loesung:
ArrayList verwenden und in jeder Iteration die neue Zahl mit list.add(k) hinzufuegen. Arraylist funktioniert wie ein dynamisches Array und ist reihenfolgentreu.

Falls du keine Liste verwenden moechtest brauchst du 2 Arrays.

du brauchst ein neues Array pro Durchlauf, das so gross ist wie du es brauchst, und du brauchst eines, das die Zahlen behaelt.

Also eines am Anfang neu machen, alles aus dem alten reinkopieren, das alte vergroessern (neu machen) und aus dem gerade kopierten zurueckkopieren...
 

Lieger

Mitglied
Obwohl ich dankbar für deine Hilfe bin, möchte ich diese Aufgabe eigentlich mit den schon durch das Buch gelernten Methoden bewältigen. Also ohne kopieren oder Arraylist, da ich von beiden Sachen noch nie etwas gelesen habe.

Ich habe den Code nunmal ein bisschen umgeändert und es gibt nur noch einen Fehler: Ich kann nicht mehr als 2 Zahlen in dem Feld abspeichern, obwohl es meiner Ansicht nach genügend Elemente zur Verfügung hat....

Zusätzlich habe ich noch ein paar Textausgaben eingebaut, damit man sieht wo das Programm steckt, bzw. bis wo es funktioniert.

Code:
Java:
import java.util.Scanner;
import Prog1Tools.IOTools;
public class Verkehrte_Ausgabe {
	public static void main (String args[])
	{
		System.out.println("Dieses Programm liest die von dir eingegebenen Zahlen rückwärts aus.");
		int i = 0;
		int k = 1;
		
		int[] feld1;
		int[] feld2;
		
		feld1 = new int[k];
		feld2 = new int[k];
		
		for (String Entscheidung = "d";!"Ja".equals( Entscheidung );k++,i++)
		{
			System.out.println("Deine Zahl:");
			feld1[i] = IOTools.readInteger();
			System.out.println("Beenden?");
			Scanner Eingabe = new Scanner (System.in);
			Entscheidung = Eingabe.nextLine();
			if (Entscheidung.equals("Ja"))
			{
				System.out.println("Bis hier funktionierts");
				int j = i;
				do 
				{
					System.out.println("i");
					System.out.println(feld1[j]);
					j--;
				} while (j > feld1.length);
				}
			else {
				continue;
			}

		}
		
	}
}

Ich hoffe jemand findet den Fehler...

Danke im Voraus,

Gruss
Lieger
 

Phash

Top Contributor
wie gross ist dein array, in dem du zahlen speicherst?

feld1 wird mit k initialisiert - k = 1

das heisst, dein Array ist 1 gross... das wird schnell zu klein :)
 

Lieger

Mitglied
Ich dachte die Länge des Feldes ist dynamisch und passt sich je nach Grösse der Variablen k an....lieg ich da falsch? (Sie sollte sich durch die Schleifen steigern)


Sooo, habe nun das Problem doch mit deiner ArrayList gelöst, ist wirklich vieeeeeel praktischer, vielen Dank für diesen Vorschlag!!
Ich poste nochmal den Code rein, damit Leute die das gleiche Problem haben die Lösung sehen:

Java:
import java.util.Scanner;
import Prog1Tools.IOTools;
import java.util.ArrayList;
import java.util.List;
public class VerkehrteAusgabe_ArrayList {
	public static void main (String args[])
	{
		System.out.println("Dieses Programm liest die von dir eingegebenen Zahlen rückwärts aus.");
		
		ArrayList Zahlen = new ArrayList();
		
		for (String Entscheidung = "d";!"Ja".equals( Entscheidung );)
		{
			System.out.println("Deine Zahl:");
			int Zahleneingabe = IOTools.readInt();
			Zahlen.add(Zahleneingabe);
			System.out.println("Beenden?");
			Scanner Eingabe = new Scanner (System.in);
			Entscheidung = Eingabe.nextLine();
			if (Entscheidung.equals("Ja"))
			{
				int j = Zahlen.size();
				do 
				{
					System.out.println(Zahlen.get(j-1));
					j--;
					if (j == 0){
						break;
					}
				} while (j >= 0);
				}
			}
		System.out.println("Beendet");

}
}

Nochmal ein grosses Danke an alle Leute die mir hier geholfen haben, obwohl manche diesen Thread sicher als lächerlich betrachten.

Achja, sorry dass ich euch hier mit solchen Noobfragen permanent aufn Sack gehe ;)

Gruss
Lieger
 

Phash

Top Contributor
Kein Thema.

Fuer genau dein Problem gibt es eben diese ArrayList, da sich arrays in Java nicht erweitern lassen.

du solltest aber ArrayList<Integer> verwenden - typisierte Generics und so...

PS dein Ansatz noch mit ArrayCopy:

Java:
package de.mroedig.verkehrt;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Verkehrte_Ausgabe {
	public static void main(String args[]) throws IOException {
		int[] array = new int[1];
		int[] reserveArray;
		int i = 0;
		BufferedReader console = new BufferedReader(new InputStreamReader(
				System.in));

		String zeile;
		System.out.println("los gehts");
		zeile = console.readLine();
		while (!(zeile.equals("") || zeile.equals("Ja") || zeile == null)) {
			if (array.length <= i) {
				array = Arrays.copyOf(array, array.length + 1);
			}

			int eingabe = Integer.parseInt(zeile);
			array[i] = eingabe;
			i++;
			System.out.println("Eingabe: ");
			zeile = console.readLine();
		}
		for (int x = array.length - 1; x >= 0; x--) {
			System.out.println(array[x]);
		}

	}
}

fuer einen Danke-Klick waere ich dankbar :)
 

Lieger

Mitglied
Uh, danke für deine Bemühungen.

Das mit dem Danke-Button hab ich total vergessen, sorry war unhöflich, mach ich sofort.

Gruss
Lieger
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
graai Zeichenmustr malen mit Eingabe Java Basics - Anfänger-Themen 7
Torschti Eingabe von Dezimalzahlen (bis zu zwei Kommastellen) Java Basics - Anfänger-Themen 11
T User input in Verbindung mit ChronoUnit anpassen und falls falsche Eingabe getätigtwird Java Basics - Anfänger-Themen 7
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
T sortierung der eingabe nach größe Java Basics - Anfänger-Themen 5
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
Jul1n4tor Scanner error bei Eingabe die kein Integer ist Java Basics - Anfänger-Themen 4
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
M Dialogbox sofort neustarten, falls aktuelle Eingabe falsch Java Basics - Anfänger-Themen 11
M Dialogbox solange abfragen, bis gültige Wert-Eingabe Java Basics - Anfänger-Themen 12
S OOP Java Eingabe in verschiedene Datenbank Tabellen eintragen Java Basics - Anfänger-Themen 7
A Bei VierGewinnt Eingabe per Buchstabe (a,b,c...) Java Basics - Anfänger-Themen 2
java-starter Erste Schritte Eingabe in Char wert umwandeln Java Basics - Anfänger-Themen 7
Lion.King Subtraktion nach Eingabe im Terminal Java Basics - Anfänger-Themen 7
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
J Mein Programm läuft bei der ersten Eingabe nicht mehr weiter, woran liegt das? Java Basics - Anfänger-Themen 6
M Eingabe limit Java Basics - Anfänger-Themen 8
brypa Programm mit Eingabe Java Basics - Anfänger-Themen 129
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
D falsche eingabe erkennen Java Basics - Anfänger-Themen 2
H Eingabe tätigen bevor Graphics g Fenster öffnet Java Basics - Anfänger-Themen 5
H For-Schleife bis Index von Eingabe laufen lassen Java Basics - Anfänger-Themen 24
Hamudi Bachir 2D Array eingabe vom Benutzer Java Basics - Anfänger-Themen 31
S Warum erscheint bei mir "Hallo Welt" und nicht die aktuelle Eingabe? Java Basics - Anfänger-Themen 16
J Jtable Eingabe nach Klick ausserhalb der Tabelle übernehmen Java Basics - Anfänger-Themen 6
B Array bei jeder Eingabe um eins erweitern Java Basics - Anfänger-Themen 3
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2
chocobear26 Interface JOptionPane - Dialog_Fenster zeigt immer vorherige Eingabe an. Java Basics - Anfänger-Themen 4
E JavaFX Taschenrechner Eingabe im Textfield beschränken Java Basics - Anfänger-Themen 2
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
M JTextField nur Zahleneingaben zulassen, eingabe sperren Java Basics - Anfänger-Themen 24
E Timer trotz erwartender Eingabe durchlaufen lassen Java Basics - Anfänger-Themen 11
K falsche Eingabe abfangen Java Basics - Anfänger-Themen 8
N Eingabe erkennen, ob groß oder kleingeschrieben worden ist Java Basics - Anfänger-Themen 22
N Fehlerausgabe bei falscher Eingabe der Users Java Basics - Anfänger-Themen 3
N Eingabe des Users direkt hinter die Ausgabe Java Basics - Anfänger-Themen 3
N Eingabe Kommazahlen über Scanner Java Basics - Anfänger-Themen 2
O Mehrfache Scanner-Eingabe durch Komma getrennt Java Basics - Anfänger-Themen 6
M String array durch Eingabe begrenzen Java Basics - Anfänger-Themen 7
iman Eingabe von Benutzer Filter machen. Java Basics - Anfänger-Themen 7
M Input/Output JTextField Eingabe in String Variable speichern Java Basics - Anfänger-Themen 15
D Eingabe einscannen, ohne vorher einen Datentypen anzugeben? Java Basics - Anfänger-Themen 1
M Verschiedene Eingabe = Verschiedene Ausgaben Java Basics - Anfänger-Themen 5
H Eingabe Java Basics - Anfänger-Themen 7
F Bedingung für Eingabe Java Basics - Anfänger-Themen 2
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
Dimax Erste Schritte String Eingabe Prüfen Java Basics - Anfänger-Themen 11
R Eingabe String umwandeln zu Integer Werten Java Basics - Anfänger-Themen 8
B Türme von Hanoi mit einer beliebigen aber gültigen Eingabe lösen Java Basics - Anfänger-Themen 5
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
J Eingabe Einschränken Java Basics - Anfänger-Themen 1
Zrebna Compiler-Fehler Java-Compiler wird nach 'javac' keyword-Eingabe nicht gestartet (Erste Übung) Java Basics - Anfänger-Themen 18
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
D Array via Eingabe befüllen Java Basics - Anfänger-Themen 6
M Wie kann ich eine Eingabe im Java-Swing übergeben? Java Basics - Anfänger-Themen 1
N Abbrechen einer Eingabe endet im Fehler Java Basics - Anfänger-Themen 3
S Konsolen eingabe Java Basics - Anfänger-Themen 17
M Scanner-Eingabe nach gewissem Zeitraum überprüfen Java Basics - Anfänger-Themen 2
x-tshainge Bei if (eingabe = = ... ) enter als eingabe nehemen Java Basics - Anfänger-Themen 4
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
S Eingabe in anderer Klasse verwenden Java Basics - Anfänger-Themen 3
T Input/Output Falsche Eingabe ausgeben Java Basics - Anfänger-Themen 3
R Ratespiel mit Return und einer Eingabe Java Basics - Anfänger-Themen 1
K Eingabe in Array speichern und Ausgeben Java Basics - Anfänger-Themen 9
J Eingabe des Scanners an einer bestimmten Position Java Basics - Anfänger-Themen 6
J Input/Output Den zweiten Output erst nach Eingabe ausgeben Java Basics - Anfänger-Themen 4
S Eingabe auf Richtigkeit und Reihenfolg überprüfen Java Basics - Anfänger-Themen 3
R Java CMD Eingabe verbergen Java Basics - Anfänger-Themen 4
L Eingabe überprüfen Java Basics - Anfänger-Themen 7
M Eingabe des Benutzers Verwenden Java Basics - Anfänger-Themen 9
T Input/Output Int Eingabe auf Zahl überprüfen Java Basics - Anfänger-Themen 30
S Method mit Eingabe abrufen Java Basics - Anfänger-Themen 1
N Operatoren Suchen nach einer bestimmten Eingabe (durch Scanner) Java Basics - Anfänger-Themen 7
M Erste Schritte primzahlen ermitteln, nur zahlen als eingabe erlauben Java Basics - Anfänger-Themen 34
K Überprüfen ob Eingabe ein Float ist Java Basics - Anfänger-Themen 4
G Warum funktioniert das Programm für negative Eingabe nicht? Java Basics - Anfänger-Themen 3
O Erste Schritte Eingabe anweisungen eliminieren Java Basics - Anfänger-Themen 3
G Objekt Instanziierung von Eingabe abhängig machen Java Basics - Anfänger-Themen 5
E Wie Passwort-Eingabe (ohne Echo!) über Konsole ? Java Basics - Anfänger-Themen 4
B Interface JTextField Eingabe als String verwenden Java Basics - Anfänger-Themen 3
F Abfrage ob Eingabe eine Zahl ist Java Basics - Anfänger-Themen 3
H Alternative Eingabe Java Basics - Anfänger-Themen 3
L Bei falscher Eingabe soll NaN zurückgegeben werden, Rückgabetyp jedoch double Java Basics - Anfänger-Themen 3
J Methoden Eingabe Methode nur Buchstaben Java Basics - Anfänger-Themen 4
F Die Teilersumme einer Eingabe berechnen Java Basics - Anfänger-Themen 11
H Leere Eingabe in einem array Java Basics - Anfänger-Themen 11
K Input/Output Nullstring als Eingabe Java Basics - Anfänger-Themen 4
M Eingabe im Terminal nicht möglich Java Basics - Anfänger-Themen 20
D Anzahl von Zahlen bei eingabe begrenzen Java Basics - Anfänger-Themen 37
T Input/Output Double und String als Eingabe einlesen Java Basics - Anfänger-Themen 9
N Error bei eingabe eines Punktes Java Basics - Anfänger-Themen 1
M Messandwendung nach Zeit und eigener Eingabe Java Basics - Anfänger-Themen 4
B Problem beim Angeben einer Eingabe Java Basics - Anfänger-Themen 12
D Fehler bei String eingabe via Scanner Java Basics - Anfänger-Themen 6
V char Eingabe aber nur für Buchstaben Java Basics - Anfänger-Themen 4

Ähnliche Java Themen


Oben