2016-04-22 4 views
0

Ich arbeite an einem Projekt in Java, das mit Brüchen zu tun hat. Jetzt muss ich in diesem Projekt eine Liste von Brüchen aus einer Textdatei nehmen und je nach Zeile muss ich sie vereinfachen, addieren, subtrahieren, multiplizieren und dividieren. Ein Teil der Textdatei:Kann man eine if-Anweisung einrichten, um nach einem bestimmten Muster in einer Textdatei zu suchen?

-16/6 
-7/2 
-17 
+20 4/2/+8 4/8 
-17/15 + +14/17 
+17 5/14 + -2 

Nun meine Frage ist, gibt es eine Möglichkeit, eine if-Anweisung oder etwas zu suchen „anynumber _/_ anynumber“ einzurichten oder „anynumber_anynumber/anynumber“, wenn ich eine Linie herausziehen der Textdatei und lies es.

Wenn nicht, was wäre der beste Weg, um die Fraktionen zu schneiden?

+1

Was Sie bisher versucht haben? Hast du schon einen Code? Wenn ja, dann posten Sie den relevanten Teil hier. – GreenGiant

+0

Suchen Sie nach der Methode 'String # split' oder nach regulären Ausdrücken. – fdsa

+0

Sie können diese RegEx verwenden, um Ihr Muster zu finden [- + \ d \ /] + –

Antwort

2

können Sie die StringTokenizer Klasse verwenden. Ich benutze Ihr Beispiel hier.

String nextLine = "-17/15 + +14/17";  //you read in each line as a String 
String delimiters = "+-*/ "; 
StringTokenizer st = new StringTokenizer(nextLine, delimiters, true); 

    while(st.hasMoreElements()){ 
    System.out.println(st.nextElement()); 
    } 

Es teilt sich in [-, 17,/15,, +, +, 14, /, 17], diese while Schleife druckt sie alle aus, so kann man sehen, wie die tokenizer funktioniert. Dann können Sie alle Operanden und Operatoren auf Stapel setzen und Logik hinzufügen, um sie von dort entsprechend auszuwerten. Sie sollten mehr Details zu Ihrem Projekt angeben, wenn Sie nach einer bestimmten Methode fragen. Es ist ein wenig unklar, was Sie tun möchten. Es scheint, als ob Sie ein Expression-Evaluator-Programm erstellen möchten, aber Sie geben auch an, dass Sie ein Programm haben möchten, das eine Datei nach Divisions-Ausdrücken durchsucht.

können Sie an jedem Token aussehen

if(st.nextElement.equals("+")); 
if(st.nextElement.equals("-")); 
if(st.nextElement.equals("/")); 
if(st.nextElement.equals("*")); 
if(st.nextElement.equals(" ")); //whitespace 
else;        //else it is a number 
+0

Danke, Sie waren sehr hilfreich. Es funktioniert 100%. –

Verwandte Themen