2017-12-11 3 views
0

Ich versuche, die Zahlen (einschließlich Double) von einer Zeichenfolge wie "4 + 5 * (4.5 + 6)" zu trennen. Ich dachte über einen Scanner nach, um die Zahlen von meiner Schnur zu trennen. Ich würde gerne hören, ob es einen besseren Weg gibt, um es zu tun und zu wissen, wie ich es mit einem Scanner machen kann? Dies ist mein Code, nur um überprüfen wollte, ob es funktioniert, und es hat eine Ausnahme ...Verwenden von Scanner zum Trennen einer Zeichenfolge

package testzehavit; 

import java.util.Scanner; 

public class main { 

    public static void main(String[] args) { 
     Scanner s= new Scanner("443+54+24"); 
     s.useDelimiter("+"); 
     System.out.println(s.next()); 

    } 

} 

Danke

+1

Planen Sie einen verschachtelten arithmetischen Ausdruck zu bewerten? Verwenden Sie keine Regex dafür, verwenden Sie einen Parser. –

Antwort

1

Kommend von this question/answer müssen Sie die + entkommen, da die Methode reguläre Ausdrücke und nicht literale Zeichenfolgen verwendet. In Java entkommen Sie mit doppeltem Backslash \\. Dieser Code:

public static void main(String[] args) { 
    Scanner s = new Scanner("443+54+24"); 
    s.useDelimiter("\\+"); 
    System.out.println(s.next()); 
} 

druckt 443

1

Die Scanner-Trennzeichen sind regex. Das Symbol '+' wird in Regexen verwendet, um "ein- oder mehrmals" zu sagen.

Was Sie tun möchten, ist:

public static void main(String[] args) { 
    Scanner s= new Scanner("443+54+24"); 
    s.useDelimiter("\\+"); 
    System.out.println(s.next()); 

} 
+0

danke! Was ist, wenn ich mehr als ein Delimeter verwenden möchte? (zum Beispiel für die Zeichenfolge "4 + 5 * (4.5 + 6)"). ist es möglich? – Jovani

+0

Dann verwenden '\\ + | \\ *' –

+0

Sie können @Jovani verwenden "" [+ * \\ (\\) \\. \ "]" ' –

0

Verwendung String.contains(); Methode. Sie könnten einen regulären Ausdruck einfügen, der den Bereich von Zahlen und Operanden darin darstellt, oder eine einfache for-Schleife ausführen und jede Iteration zu String parsen, um sie als Argument an die Methode contains zu übergeben.

Entschuldigung, dass ich keinen Code gezeigt habe, aber ich bin auf meinem Handy. Google String.contains() und Regulärer Ausdruck. Sie sollten in der Lage sein, die beiden zu kombinieren.

0

public static void main (String [] args) {

Scanner s = new Scanner("443+54+24"); 

s.useDelimiter("\\+"); 

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

}

Verwandte Themen