加法/乘法/除法在Java中
问题描述:
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中
答
我认为你应该使用这样的:因为它的字符转换为字符串
double fstNum = Double.valueOf(new String(new char[] {inputArray[0]}));
double sndNum = Double.valueOf(new String(new char[] {inputArray[4]}));
它变成双打
答
对于数学运算,我建议使用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;
}
}
}
提示的例子:字符“1”,不具有数值1 。http://unicode-table.com –
...如果我输入“1 + 1”或“10 + 10”,会发生什么? ;-) – haraldK
char num1Char = inputArray [0]; char num2Char = inputArray [4]; \t \t double num1Double = num1Char; double num2Double = num2Char; 这仍然关闭 –