Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的加法/乘法/除法是关闭的_Java - Fatal编程技术网

Java中的加法/乘法/除法是关闭的

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

所以我写了一个简单的计算器,它工作得非常好,除了我对除减法以外的任何东西的答案都很差之外。例如,5*2=2650.0。我是编程新手,所以如果我犯了一个非常基本的错误,请不要责怪我:)

我想你应该用这个:

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;
        }
    }
}