UserInput (Eingabe in Form einer Zeichenkette)

altirum

Mitglied
Hallo!
Wie kann ich in JAVA eine kleine Anwendung implementieren, die vom Benutzer die Eingabe seines Namens einfordert. Die darauf folgende Eingabe wird eingelesen und anschließend anhand von einfachen Mechanismen auf Plausibilität hin geprüft.

Danke !
 

partsch

Aktives Mitglied
Du könntest mit Hilfe der Klasse JOptionPane aus dem javax.swing package arbeiten. Diese Klasse hat eine statische Methode namens showInputDialog(prompt:String), welche einen kleinen Dialog startet mit einen Eingabefeld.
Java:
String input = null;
do {
   input = javax.swing.JOptionPane.showInputDialog("Geben Sie hier ihren Namen ein.");
} while(input == null || input.isEmpty());
 

altirum

Mitglied
Danke für schnelle Antwort!

Also, mein Programm soll aus folgenden Schritten bestehen:
"
Konstruktor, der keine Parameter empfängt
+ Methoden für den lesenden und schreibenden Zugriff (vollständig)
+ readInput()
Liest eine Benutzereingabe ein und validiert diese;
Wiederholt dieses Vorgehen solange, bis die Eingabe gültig ist;
Weist dann die Eingabe dem Attribut des aktuellen Objektes zu
-booleanisValid(Stringinput)
Prüft, ob die als Parameter übergebene Zeichenkette bestimmte
formale Kriterien erfüllt oder nicht;
Gibt ein entsprechendes Ergebnis zurück
-booleanisJustOneName(Stringinput)
Prüft, ob die als Parameter übergebene Zeichenkette aus mehr als
einer Zeichenfolge besteht, durch Testen auf innen liegenden
Whitespace;
Gibt ein entsprechendes Ergebnis zurück
-booleancontainsOnlyLetters(Stringinput)
Prüft, ob die als Parameter übergebene Zeichenkette ausschließlich
Buchstaben enthält;
Gibt ein entsprechendes Ergebnis zurück
-StringnormalizeInput(Stringinput)
Modifiziert die als Parameter übergebene Zeichenkette so, dass sie
nicht mit Whitespace anfängt oder endet und der erste Buchstabe
groß sowie alle weiteren Buchstaben klein geschrieben sind;
Gibt als Ergebnis die so modifzierte Zeichenkette zurück
''


Aber wie kann ich das in einem Programm schreiben???
 

partsch

Aktives Mitglied
Da ich mal annehme, dass das eine Hausaufgabe deiner Uni/Schule ist würde ich so vorgehen:

Lies dir die Mitschrifften der letzten Stunden durch.
Eröffne ein Projekt in deiner Entwicklungsumgebung und erzeuge die notwendige Klasse.
Dann beginne die Methoden/Funktionen und Konstruktoren zu schreiben.
Nimm dabei als Hilfe das Web. (zB Java ist auch eine Insel, Handbuch der Java-Programmierung, ...)
 

altirum

Mitglied
Danke für Tipps. Das ist mein Code:

package edu.hm.cs.swe2.strings;

public class Application {

/**
* @param args
*/
public static void main(String[] args) {
UserInput userInput = new UserInput ();
userInput.readInput();
System.out.println("Hallo " + userInput.getValue() + ", schön, dass du da bist!");

}

}


Code:
package edu.hm.cs.swe2.strings;

import javax.swing.JOptionPane;

public class UserInput {
private String value;

public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public void readInput(){
String name;
do{
name=JOptionPane.showInputDialog("Gib den Namen ein");
}while(!isValid(name));
setValue(name);
}
private static boolean isValid(String text){



}

}

Was ich nicht verstehe, wie kann ich prüfen, ob:
- Zeichenkette umfasst nur ein eiziges Zeichen
-verbleibende Zeichenkette aus mehr als einem Wort besteht
- diese Zeichenkette sich ausschliesslich aus Buchstaben zusammensezt.

Danke!
 

partsch

Aktives Mitglied
Java:
public class UserInput {
	public static void main(String[] args) {
		UserInput in = new UserInput();
		in.read();
		System.out.printf("Hallo %s, sei Willkommen!%n", in.getValue());
		System.out.println("Name besteht nur aus einem Zeichen: " + in.justOneLetter());
		System.out.println("Name besteht nur aus Buchstaben: " + in.containsOnlyLetters());
		System.out.println("Name besteht nur aus einem Wort: " + in.justOneName());
		System.out.println("\n<---------------END--------------->");
	}
	
	private String value;
	
	public UserInput() {
		value = null;
	}
	
	public void read() {
		do {
			value = JOptionPane.showInputDialog(null, "Geben Sie hier ihren Namen ein: ", "Eingabe", JOptionPane.PLAIN_MESSAGE);
		} while(value == null || value.isEmpty());
	}
	
	/**
	 * Überprüft ob der String nur aus einem Wort besteht.
	 * Dabei verwende ich hier die Methode contains(CharSequence s),
	 * mit welcher man überprüfen kann, ob ein Teilstring in dem
	 * String enthalten ist.
	 * @return
	 */
	public boolean justOneName() {
		if(value != null)
			return !value.contains(" ");
		return false;
	}
	
	/**
	 * So kann man übeprüfen ob der String nur ein Zeichen enthält.
	 * Man vergleicht die länge des internen Char - Arrays mit 1
	 * @return
	 */
	public boolean justOneLetter() {
		if(value != null)
			return value.length() == 1;
		return false;
	}
	
	/**
	 * Überprüft ob die Value nur aus Buchstaben besteht.
	 * Verwendet dazu die Methode matches von String welche
	 * mit regulären Ausdrücken arbeitet.
	 * @return
	 */
	public boolean containsOnlyLetters() {
		if(value != null)
			return value.matches("\\D*");
		return false;
	}
	
	public String getValue() {
		return value;
	}
}

Hier ist eine kleine Erläuterung zu den Regular Expressions
 

altirum

Mitglied
Danke!
Ich habe folgende Fehlermeldung:


Exception in thread "main" java.lang.Error: Unresolved compilation problems:
JOptionPane cannot be resolved
JOptionPane cannot be resolved

at edu.hm.cs.swe2.strings.UserInput.read(UserInput.java:24)
at edu.hm.cs.swe2.strings.UserInput.main(UserInput.java:8)
 

Landei

Top Contributor
Klassen aus anderen Packages muss man bekanntlich importieren. Also vor deine Klassendefinition:

Java:
import javax.swing.JOptionPane;

Aber normalerweise sollte dir sowas die IDE deines Vertrauens vorschlagen...
 

altirum

Mitglied
Ich glaube etwas mit Application nicht stimmt.
Ich sollte vielleicht mit java.lang.Stringbuilder, Java.lang.String und java.lang.Character arbeiten.

Mein Application:

package edu.hm.cs.swe2.strings;

import javax.swing.JOptionPane;

Java:
public class Application {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		UserInput in = new UserInput ();
		in.read();
		System.out.println("Hallo " + in.getValue() + ", schön, dass du da bist!");

	}

}


Mein Problem ist, dass ich nicht weiss, wie ich Userinput und Application zusammenbinden kann...
 
Zuletzt bearbeitet von einem Moderator:

altirum

Mitglied
Letzte Frage hat sich erlediegt. Ich habe meinen Fehler gefunden.

Jeztz habe ich folgendes Problem. Wenn ich "an3na" eingebe, dann kommt folgende Ausgabe:

Hallo an3na, schoen, dass du da bist!
Sei nicht so faul. Dein name ist mehr als ein Zeichen lang! false
Du hast Zeichen eingegeben, die keine Buchstaben sind. false
Du hast mehr als ein Wort eingegeben. Wie heisst du denn jeztz? true

<---------------END--------------->


Es soll kommen: "Du hast Zeichen eingegeben, die keine Buchstaben sind"
 

crackm

Mitglied
Java:
import javax.swing.*;

public class UserInput {
    public static void main(String[] args) {
        UserInput in = new UserInput();
        in.read();
        if(!in.containsOnlyLetters())
        {
           System.out.println("Du hast Zeichen eingegeben, die keine Buchstaben sind.");
           return;
        }

        System.out.printf("Hallo %s, sei Willkommen!%n", in.getValue());
        System.out.println("Name besteht nur aus einem Zeichen: " + in.justOneLetter());
        System.out.println("Name besteht nur aus Buchstaben: " + in.containsOnlyLetters());
        System.out.println("Name besteht nur aus einem Wort: " + in.justOneName());
        System.out.println("\n<---------------END--------------->");
    }

    private String value;

    public UserInput() {
        value = null;
    }

    public void read() {
        do {
            value = JOptionPane.showInputDialog(null, "Geben Sie hier ihren Namen ein: ", "Eingabe", JOptionPane.PLAIN_MESSAGE);
        } while(value == null || value.isEmpty());
    }

    /**
     * Überprüft ob der String nur aus einem Wort besteht.
     * Dabei verwende ich hier die Methode contains(CharSequence s),
     * mit welcher man überprüfen kann, ob ein Teilstring in dem
     * String enthalten ist.
     * @return
     */
    public boolean justOneName() {
        if(value != null)
            return !value.contains(" ");
        return false;
    }

    /**
     * So kann man übeprüfen ob der String nur ein Zeichen enthält.
     * Man vergleicht die länge des internen Char - Arrays mit 1
     * @return
     */
    public boolean justOneLetter() {
        if(value != null)
            return value.length() == 1;
        return false;
    }

    /**
     * Überprüft ob die Value nur aus Buchstaben besteht.
     * Verwendet dazu die Methode matches von String welche
     * mit regulären Ausdrücken arbeitet.
     * @return
     */
    public boolean containsOnlyLetters() {
        if(value != null)
            return value.matches("\\D*");
        return false;
    }

    public String getValue() {
        return value;
    }
}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
A UserInput als Arraylist speichern? Java Basics - Anfänger-Themen 3
A Warten auf Userinput Java Basics - Anfänger-Themen 2
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

Ähnliche Java Themen

Neue Themen


Oben