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