Java中的加法/乘法/除法是关闭的
所以我写了一个简单的计算器,它工作得非常好,除了我对除减法以外的任何东西的答案都很差之外。例如,5*2=2650.0。我是编程新手,所以如果我犯了一个非常基本的错误,请不要责怪我:)我想你应该用这个:Java中的加法/乘法/除法是关闭的,java,Java,所以我写了一个简单的计算器,它工作得非常好,除了我对除减法以外的任何东西的答案都很差之外。例如,5*2=2650.0。我是编程新手,所以如果我犯了一个非常基本的错误,请不要责怪我:)我想你应该用这个: package Calculator; import java.util.Scanner; public class Calculator { public static void main(String[] args) { Scanner s = new Scanner(Syst
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;
}
}
}
因为它将字符转换为字符串,而字符串转换为双精度用于数学运算,我建议使用java.math.BigDecimal,因为java的基本类型使用的算法并不总是符合实际情况或类似情况 我添加了一个示例,说明了求和如何失败以及如何求解乘法(1.1+0.11=1.210000000000002)
提示:字符“1”没有数字值1。。。如果我输入“1+1”或“10+10”?;-)char num1Char=输入阵列[0];char num2Char=输入阵列[4];double num1 double=num1字符;double num2Double=num2Char;这还没有结束
double fstNum = Double.valueOf(new String(new char[] {inputArray[0]}));
double sndNum = Double.valueOf(new String(new char[] {inputArray[4]}));
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;
}
}
}