Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Datum als eine Zahl eingeben, spliten und einzeln ausgeben

Empfohlene Antworten

Veröffentlicht

Hallo,

ich hoffe es kann mir jemand helfen, denn ich komme nicht weiter.

Ich will ein kurzes Programm schreiben, bei dem ich erst ein Datum in dem Format "TT MM JJJJ" eingebe, dieses dann anhand der Lehrzeichen splittet und in 3 einzelne Variablen speichere, welche ich dann wieder einzeln ausgeben kann.

Folgend habe ich es probiert, aber es geht noch nicht:

Scanner input = new Scanner(System.in);

String tag;

String monat;

String jahr;

String eingabe;

System.out.print("Geben Sie bitte das Datum in folgendem Format ein 'TT MM JJJJ': ");

eingabe = input.next();

//String Splitten und in Arrays speichern

String[] spliten = eingabe.split(" "); // –> splitten an den Leerzeichen

tag = spliten[0];

monat = spliten[1];

jahr = spliten[2];

System.out.println(tag);

System.out.println(monat);

System.out.println(jahr);

Danke schon für eure hilfe

Scanner (Java Platform SE 7 ) lies mal die ersten paar Zeilen der Dokumentation zum Scanner.
  • Autor
Scanner (Java Platform SE 7 ) lies mal die ersten paar Zeilen der Dokumentation zum Scanner.

Dann müsste ich folgendes verwenden oder:


String input = "1 fish 2 fish red fish blue fish";

Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");

System.out.println(s.nextInt());

System.out.println(s.nextInt());

System.out.println(s.next());

System.out.println(s.next());

s.close(); 

und muss bei useDelimiter() dann das Lehrzeichen rein oder was kommt in die Klammer rein?

und mein Wert der Variable "eingabe" kann ich hir der variable input übergeben oder?

ich versteh das noch nicht so ganz, ich hoffe es kann mir jemand weiter helfen.

Bearbeitet von Meri19

Der Scanner splittet schon automatisch an Leerzeichen (default: whitespace delimiter). D.h. bei TT MM JJJJ enthält er schon 3 Tokens, du könntest es so machen:

tag = input.next();

monat = input.next();

jahr = input.next();

Es wäre aber sicherer wenn du einen BufferedReader nimmst und mit reader.readLine() die Eingabe abholst, dann kannst du eingabe.split(" ") verwenden:

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

Bearbeitet von dicka

Es wäre aber sicherer wenn du einen BufferedReader nimmst und mit reader.readLine() die Eingabe abholst, dann kannst du eingabe.split(" ") verwenden:

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

Warum sollte das sicherer sein?

Weil mit der Scanner Methode bei diesem Anwendungsfall ein "Deadlock" bei falscher Eingabe auftreten könnte, ohne Fehlermeldung. Beim BufferedReader ist "nur" mit Exceptions zu rechnen, was die Fehlersuche aber vereinfacht.

Wenn abzusehen ist, dass die Gruppe der Nutzer es wirklich nicht schaffen, die Eingabe so vorzunehmen, wie es angegeben wurde, dann kann man sich auch einfach mit dem Scanner die Eingabe zeilenweise zurückgeben lassen um diese dann selber zu splitten.

Genauso gut könnte man auch die next() Methode mit einem RegExp als Übergabeparameter benutzen, dann kann man auch gleichzeitig sicherstellen dass die Eingabe wenigstens formal dem entspricht, was man erwartet.

  • 2 Wochen später...
  • Autor
Der Scanner splittet schon automatisch an Leerzeichen (default: whitespace delimiter). D.h. bei TT MM JJJJ enthält er schon 3 Tokens, du könntest es so machen:

tag = input.next();

monat = input.next();

jahr = input.next();

Danke schön für die Hilfe, ich hatte einfach zu kompliziert gedacht, obwohl es auch viel einfacher ging bzw. die Fähigkeiten der Klasse nicht gekannt.

Jetzt klapt es perfekt.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.