2016-11-26 14 views
-3
package Calculator; 

import java.util.Scanner; 

public class Calculator { 

public static void main(String[] args) { 

    Scanner s = new Scanner(System.in); 

    double answer; 

    System.out.println("Enter your operation: "); 
    String input = s.nextLine(); 
    char[] inputArray = input.toCharArray(); 

    double fstNum = inputArray[0]; 
    double sndNum = inputArray[4]; 
    char op = inputArray[2]; 

    switch (op) { 
     case '+': answer = fstNum + sndNum; 
     System.out.println("The answer is: " + answer); 
     break; 

     case '-': answer = fstNum - sndNum; 
     System.out.println("The answer is: " + answer); 
     break; 

     case '*': answer = fstNum * sndNum; 
     System.out.println("The answer is: " + answer); 
     break; 

     case '/': answer = fstNum/sndNum; 
     System.out.println("The answer is: " + answer); 
     break; 
     } 
    } 
} 

この単純な電卓は、減算以外のものからの私の答えはちょっと離れています。例えば。 5 * 2 = 2650.0。私は本当に基本的なミスを犯したので、もし私がプログラミングではかなり新しいよ、私のBashしないでください:)Javaで加算/掛け算/除算がオフになっています

+5

ヒント解決する方法方法の例追加しました:文字を「1」、数値を持っていない1 http://unicode-table.com –

+0

... "1 + 1"または "10 + 10"と入力するとどうなりますか? ;-) – haraldK

+0

char num1Char = inputArray [0]; char num2Char = inputArray [4]; \t \t double num1Double = num1Char; double num2Double = num2Char; これはまだオフです –

答えて

0

を私はあなたがこの使用すべきだと思う:それは文字列に文字を変換しているため

double fstNum = Double.valueOf(new String(new char[] {inputArray[0]})); 
double sndNum = Double.valueOf(new String(new char[] {inputArray[4]})); 

を2倍に変換されます

0

数学的な操作については、Javaの基本型は現実とは必ずしも一致しないアルゴリズムを使用するため、java.math.BigDecimalを使用することをお勧めします。

私は合計がまた失敗し、乗算(1.1 + 0.11 = 1.2100000000000002)

import java.util.Scanner; 
import java.math.BigDecimal; 

public class Calculator { 

public static void main(String[] args) { 

    Scanner s = new Scanner(System.in); 

    BigDecimal answer; 
    double a = 1.1; 
    double b = 0.11; 
    System.out.println("try: " + (a+b)); 

    System.out.println("Enter your operation: "); 
    String input = s.nextLine(); 
    char[] inputArray = input.toCharArray(); 

    BigDecimal fstNum = new BigDecimal("" + inputArray[0]); 
    BigDecimal sndNum = new BigDecimal("" + inputArray[4]); 
    char op = inputArray[2]; 

    switch (op) { 
     case '*': answer = fstNum.multiply(sndNum); 
     System.out.println("The answer is*: " + answer); 
     break; 
     } 
    } 
}