2016-11-26 145 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。我很新的节目,所以如果我犯了一个很基本的错误,请不要打坏了我:)加法/乘法/除法在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]})); 

它变成双打

0

对于数学运算,我建议使用java.math.BigDecimal,因为java的基本类型使用的算法并不总是与现实或类似的东西相对应。

我已经加入的如何的总和也失败,以及如何解决乘法(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; 
     } 
    } 
}