Java中没有添加/乘法/除法

时间:2016-11-26 17:36:34

标签: 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。我对编程非常陌生,所以如果我犯了一个非常基本的错误,请不要抨击我:)

2 个答案:

答案 0 :(得分:0)

我认为你应该使用它:

public class MergeSort {
  public static void main(String[] args) throws ArrayIndexOutOfBoundsException{

     int a[]={2,4,5,7,1,2,3,6};

     System.out.println("Unsorted Array");
     for(int i=0;i<a.length;i++){
        System.out.print(a[i]+" ");
     }
     try{
        MergeSort m=new MergeSort();
        a=m.merge(a, 0, 3, 7);
     }catch(Exception e ){
        e.printStackTrace();
     }
     System.out.println("\nSorted Array");
     for(int i=0;i<a.length;i++){
        System.out.print(a[i]+" ");
     }
  }

  int [] merge(int a[],int p,int q,int r){
  //int a[]={2,4,5,7,1,2,3,6};
  int n1=q-p+2;
  int n2=r-q+1;

  int L[]=new int[n1];
  int R[]=new int[n2];

  for(int i=0;i<n1 -1;i++){
    L[i]=a[p+i];
  }
  L[n1 -1] = Integer.MAX_VALUE;
  //q=q+1;
  for(int i=0;i<n2 -1;i++){
    R[i]=a[q+i+1];
  }
  R[n2-1] = Integer.MAX_VALUE;

  //L[n1+1]=9;
  ///R[n2+1]=9;

  int i=0,j=0;

  for(int k = p; k <= r; k++){
      if(L[i] <= R[j]){
        a[k] = L[i++];
    }else{
        a[k] = R[j++];
    }
  }
  return a;
 }
}

因为它将字符转换为转换为双精度的字符串

答案 1 :(得分:0)

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

我添加了一个总和如何失败以及如何解决乘法的例子(1.1 + 0.11 = 1.2100000000000002)

false