一个计算器中有多个操作的java问题
我正在做一项运动,我在做联合手术时遇到了一些问题
这是我第一次尝试使代码能够执行多个double操作,但符号相同。示例(33.5+6+2+2+44.5)
这种方法效果很好
if (!exitOrHelp(respuesta)) {
if (respuesta.contains("+")) {
double solucion = 0;
String[] numeros = respuesta.split("\\+");
for (String a : numeros) {
solucion = solucion + Double.parseDouble(a);
}
System.out.println(solucion);
System.out.println("Introduzca otra operación");
} else if (respuesta.contains("-")) {
double solucion = 0;
String[] numeros = respuesta.split("-");
for (String a : numeros) {
solucion = solucion - Double.parseDouble(a);
}
System.out.println(solucion);
System.out.println("Introduzca otra operación");
} else if (respuesta.contains("*") || (respuesta.contains("x"))) {
double solucion = 1;
String[] numeros = respuesta.split("\\*");
for (String t : numeros) {
solucion = solucion * Double.parseDouble(t);
}
System.out.println(solucion);
System.out.println("Introduzca otra operación");
} else if (respuesta.contains("/")) {
double solucion = 0;
String[] numeros = respuesta.split("/");
solucion = Double.parseDouble(numeros[0]) / Double.parseDouble(numeros[1]);
if (numeros.length > 2) {
for (int r = 2; r < numeros.length; r++) {
solucion = solucion / Double.parseDouble(numeros[r]);
}
}
System.out.println(solucion);
System.out.println("Introduzca otra operación");
} else {
System.out.println("No introdujiste ninguno de estos operandos: '+,-,*,/'");
}
}
这是我尝试进行联合作战的第二次测试。这种方法只适用于整数,因为程序只接受前面的值,并且只适用于只有一个数字的数字。例如:3*7/2/2+4
double calc = 0;
String scan = "3*7/2/2+4";
int resta = scan.indexOf('/');
while (resta > 0) {
calc = Double.parseDouble(scan.substring(resta - 1, resta)) / Double.parseDouble(scan.substring(resta + 1, resta + 2));
String new_scan = scan.substring(0, resta - 1) + (int) calc + scan.substring(resta + 2, scan.length());
scan = new_scan;
resta = scan.indexOf('/');
}
System.out.println("Scan 1: " + scan);
int resta2 = scan.indexOf('*');
while (resta2 > 0) {
calc = Double.parseDouble(scan.substring(resta2 - 1, resta2)) * Double.parseDouble(scan.substring(resta2 + 1, resta2 + 2));
String new_scan = scan.substring(0, resta2 - 1) + (int) calc + scan.substring(resta2 + 2, scan.length());
scan = new_scan;
resta2 = scan.indexOf('*');
}
System.out.println("Scan 2: " + scan);
int resta3 = scan.indexOf('+');
while (resta3 > 0) {
calc = Double.parseDouble(scan.substring(resta3 - 1, resta3)) + Double.parseDouble(scan.substring(resta3 + 1, resta3 + 2));
String new_scan = scan.substring(0, resta3 - 1) + (int) calc + scan.substring(resta3 + 2, scan.length());
scan = new_scan;
resta3 = scan.indexOf('+');
}
System.out.println("Scan 3: " + scan);
int resta4 = scan.indexOf('-');
while (resta4 > 0) {
calc = Double.parseDouble(scan.substring(resta4 - 1, resta4)) - Double.parseDouble(scan.substring(resta4 + 1, resta4 + 2));
String new_scan = scan.substring(0, resta4 - 1) + (int) calc + scan.substring(resta4 + 2, scan.length());
scan = new_scan;
resta4 = scan.indexOf('-');
}
System.out.println("Scan 4: " + scan);
在尝试了几个小时的各种方法后,我的想法已经没有了,因此我请求帮助
我要寻找的最终目标是能够进行双精度、负数和2位数的多重运算。例如:-73.5*4+744/2+76-6
我或多或少地知道这个结构应该是怎样的,但我一直没能开发它。我附上我认为它会是什么样子的picture
共 (0) 个答案