2016-03-25 17 views
2

Also, meine Frage ist, wie mache ich das machen meine Taschenrechner-App in der Lage sein, Eingabe wie folgt zu nehmen, 100 * 2/2 + 5 und machen es die Summe davon zurück? oder vielleicht sogar irgendwie() Klammern ..?Rechner Java Zahlen hinzufügen

import java.util.Scanner; 

public class Calculator { 
    public static void main(String[] args) { 
     Scanner scanner = new Scanner(System.in); 

     System.out.println("Enter number: "); 
     String input = scanner.nextLine(); 

     System.out.println("Enter number 2: "); 
     String input2 = scanner.nextLine(); 

     System.out.println("Enter operator "); 
     String op = scanner.nextLine(); 

     int intEnter1 = Integer.parseInt(input.toString()); 
     int intEnter2 = Integer.parseInt(input2.toString()); 

     if (op.contains("+")) { 
      System.out.println(intEnter1 + intEnter2); 
     } 

     if (op.contains("-")) { 
      System.out.println(intEnter1 - intEnter2); 
     } 

     if (op.contains("*")) { 
      System.out.println(intEnter1 * intEnter2); 
     } 

     if (op.contains("/")) { 
      double intEnter1Double = (double) intEnter1; 
      double intEnter2Double = (double) intEnter2; 
      System.out.println(intEnter1Double/intEnter2Double); 
     } 
    } 
} 
+0

Was Sie wollen viel mehr Code erreichen, wird sich schließen, und da SO ist kein Codeschreibdienst, müssen Sie entweder fragen eine spezifischere Frage, oder probieren Sie es einfach aus. –

+0

Sie müssen den Ausdruck von der Infix-Notation in die umgekehrte polnische Notation umwandeln und dann auswerten. Es ist ein bekanntes Problem und es gibt viele Tutorials und Beispiele, also sollten Sie dort anfangen und eine bestimmte Frage stellen, wenn Sie eine Straßensperre treffen. – Filkolev

Antwort

2

Sie haben Ihren Ausdruck Reverse Polish notation zu konvertieren. Die Idee ist komplexer Ausdruck zu einer solchen Form zu transformieren, dass es möglich sein wird, das Ergebnis mit Hilfe des folgenden Algorithmus berechnet werden:

  1. Expression von links nach rechts
  2. Zahlen
  3. zu stapeln geschoben analysiert wird, wenn ein Bediener aufgetreten, der Korrespondent Menge von Zahlen a tauchte vom Stapel (1 für unärer Operator, 2 für binär), und die Operation an ihnen durchgeführt wird

beispielsweise die Eingabe gegeben:

5 + ((1 + 2) × 4) − 3 

die Notation wird, wie folgend:

5 1 2 + 4 × + 3 − 
2

Ich fand eine Bibliothek, die Ausdrücke auswerten macht. Du kannst es versuchen.

http://javaluator.sourceforge.net/en/home/

Double value = new DoubleEvaluator().evaluate(expression); 

Aber diese Bibliothek machen alles für Sie Arbeit und vielleicht möchten Sie selbst der Algorithmus nicht tun?

+0

Danke dir ich werde verwenden – user6069863

4

Es gibt auch eine sehr gute Bibliothek zum Auswerten von mathematischen Ausdrücken namens exp4j.

Sie können etwas tun:

Expression e = new ExpressionBuilder("3 * sin(y) - 2/(x - 2)") 
    .variables("x", "y") 
    .build() 
    .setVariable("x", 2.3) 
    .setVariable("y", 3.14); 
double result = e.evaluate();