2016-04-24 2 views
0

Как можно ввести целое уравнение, например 1 + 2. Поскольку я могу только до сих пор просить пользователя вводить по одной цифре за раз, я хотел бы знать, как я позволяю пользователю вводить все уравнение?Создание базового калькулятора на Java?

import java.util.Scanner; 
public class TryCalculator { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     // TODO code application logic here 
     System.out.println("Addition"); 
     System.out.println("Subtraction"); 
     System.out.println("Division"); 
     System.out.println("Multiplication"); 
     System.out.println("Natural Log"); 
     System.out.println("Exponent"); 
     System.out.println("**********************************"); 

     Scanner scan = new Scanner(System.in); 
     Scanner keyboard = new Scanner(System.in); 

     double value1; 
     double value2; 
     String op; 

     System.out.println("enter a digit"); 
     value1 = scan.nextDouble(); 
     System.out.println("enter operation "); 
     op = keyboard.next(); 
     System.out.println("enter second digit"); 
     value2 = scan.nextDouble(); 

     if(op.equals("+")){ 
      System.out.println(value1 + value2); 

     }if(op.equals("-")){ 
      System.out.println(value1 - value2); 

     }if(op.equals("/")){ 
      System.out.println(value1/value2); 

     }if(op.equals("*")){ 
      System.out.println(value1 * value2); 

     }if(op.equals("^")){ 
      System.out.println(Math.pow(value1, value2)); 

     }if (op.equals("log")){ 
      System.out.println(Math.log(value1)); 

     }else{ 

     } 
    } 
} 
+0

Прочитайте всю строку, а затем проанализируйте строку ... – Tom

+1

См. Http://stackoverflow.com/questions/3422673/evaluating-a-math-expression-given-in-string-form –

+0

scan.nextLine() – Natecat

ответ

-1

Если вы не хотите использовать Javascript или некоторые оценщики, как те (link1, link2) вы можете сделать, как это с простым выражением, как 1 + 2:

Scanner keyboard = new Scanner(System.in); 
String exp = keyboard.next(); 
    String []all = exp.split(" ", -1); 
/* 
then 
all[0] = first operation; 
all[1] = operator; 
all[0] = second operator 
*/ 

//and you can do like this 
void calculate(String []all) { 

    Double value1 = Double.parseDouble(all[0]); 
    Double value2 = Double.parseDouble(all[2]); 
    String op = all[1]; 

    if(op.equals("+")){ 
      System.out.println(value1 + value2); 

    }if(op.equals("-")){ 
     System.out.println(value1 - value2); 

    }if(op.equals("/")){ 
     System.out.println(value1/value2); 

    }if(op.equals("*")){ 
     System.out.println(value1 * value2); 

    }if(op.equals("^")){ 
     System.out.println(Math.pow(value1, value2)); 

    }if (op.equals("log")){ 
     System.out.println(Math.log(value1)); 

    }else{ 

    } 
} 

Это не проверяется, но может быть хорошей отправной точкой.

+1

* «Это не проверено» * Обидно. Поэтому проверьте его и исправьте ошибку (-ы) :). – Tom

+0

Идеи более чем достаточно в некоторых ситуациях. Мне не нужно кодировать все его приложение. –

+0

* «Мне не нужно кодировать все его заявление». * Кто сказал, что должен? – Tom

Смежные вопросы