Fragmente eines Strings zu einzelnen int konvertieren

And92

Neues Mitglied
Hallo, habe folgendes Problem.
Muss in meinem Programm eine Methode implementieren, die in einem String, die einzelnen Zahlen raussucht und diese dann separat zu int konvertiert.

Beispiel:
String s = "12 1 53 749"
Und die Methode soll mir folgendes liefern.
int a == 12
int b == 1
int c == 53
int d == 749

Die einzelnen Variablen sind schon davor definiert.

Falls in dem String Buchstaben oder andere Zeichen, außer das Leerzeichen vorkommen, muss "invalid input" auf der Console rauskommen. Auch gilt das, wenn es nicht vier separate Zahlen in dem String sind.

Gibt es dafür irgendwelche von der Java vordefinierten Methoden und Exceptions für die Ausnahme Fälle?

Falls da Buchstaben zwischendurch gegeben sind, dachte ich, dass man das Problem durch die InputMissmatchException machen könnte, aber was ist dann mit dem Leerzeichen? Oder wird er akzeptiert bei der Konvertierung der einzelnen Fragmente zu einer Zahl?

Wäre für jeden Tipp sehr dankbar!
 
ich würd mir String.split ansehen, dann würde ich, die buchstaben in einer map ablegen wo der key die zahl und der value der buchstabe ist. exception... naja InvalidArgumentException könnte reichen... aber is im grunde egal..

wenn es nicht vier separate Zahlen in dem String sind.
dafür gibte es natürlich keine exception ;-)
 
Ja, da gibt es Exceptions für, wenn du Scanner verwendest

Java:
import java.util.Scanner;
import java.io.StringReader;
...
String s = "12 1 53 749";
Scanner sc = new Scanner(new StringReader(s));
int a=0, b=0, c=0, d=0;
boolean fehler = false;
do {
    try {
        fehler = false;
        a = sc.nextInt();
        b = sc.nextInt();
        c = sc.nextInt();
        d = sc.nextInt();
    } catch(Exception e) {
        System.out.println("invalid input");
        fehler = true;
    }
} while(fehler);
 
Hey, danke für eure Antworten. Leider darf ich keinen StringReader benutzen 🙁
Nur Klasse aus java.lang und java.util

Habe noch vergessen zu erwähnen, dass vor den Zahlen das Wort "start" stehen muss.
Bsp.: "start 87 9 898 8"

Den Begin eines Wortes auf "start " zu überprüfen geht es entweder mit string.startsWith().

Falls true zurückgegeben wird, soll der String ab dem index 6 gesplitet werden.
Man könnte dann den String nach jedem Leerzeichen in Teilstringe spliten, aber irgendwie finde ich, dass es zu unübersichtlich wird. Oder ist das die einzige Lösung? Gibt es nicht eine Methode, die überprüft, ob ein Zeichen eine Zahl oder eine Buchstabe ist?
 

Zurück
Oben