任何人都可以帮我这个代码吗?我想计算一个数组中的元素0,其中运算符位于另一个数组中的元素0中,第一个数组中的元素1带有for循环。应该可以计算超过2个数字。抱歉英语不好。
这里是代码:
package rechnerparser;
import java.util.*;
public class RechnerParser
{
public static String rechnung,
regexCheck = "[\\+\\-\\*/]";
public static float ergebnis;
public static int anzahlOperator, anzahlZahlen;
public static String[] Zeichenkette, operatoren;
public static float[] konventiert;
public static Scanner eingabe = new Scanner (System.in);
public static void main(String[] args)
{
System.out.println("Geben Sie Ihre Rechnung auf einer Zeile ein z.B. 4+7/8 [+, -, *, /]");
rechnung = eingabe.next();
Zeichenkette = rechnung.split(regexCheck); //save the numbers in the array "Zeichenkette"
operatoren = rechnung.replaceAll("[\\da-zA-Z]","").split(""); //save the operator (+, -, *, /)in the array "operatoren"
konventiert = new float[Zeichenkette.length];
int i = 0;
while(i < Zeichenkette.length) //convert the numbers from string array to float array
{
konventiert[i] = Float.parseFloat(Zeichenkette[i]);
i++;
}
for (int a = 0; a < konventiert.length; a++)
{
ergebnis = konventiert[a] operatoren[a] (a++) konventiert[a]; //not working
////////////konventiert[0] operatoren[0] konventiert[1]
//example: 5 + 4 = 9
}
/*
if(operatoren[0].contains("+")) //only with 2 numbers
{
ergebnis = konventiert[0] + konventiert[1];
}
else if(operatoren[0].contains("-"))
{
ergebnis = konventiert[0] - konventiert[1];
}
else if(operatoren[0].contains("*"))
{
ergebnis = konventiert[0] * konventiert[1];
}
else if(operatoren[0].contains("/"))
{
ergebnis = konventiert[0] / konventiert[1];
}
else
{
System.out.println("Falsches Format.");
}
*/
System.out.println(ergebnis);
}
}
答案 0 :(得分:1)
operatoren[a]
是String值,而不是Java运算符。
for (int i = 0; i < konventiert.length - 1; i++) {
switch (operatoren[i]) {
case "*":
result[i] = konventiert[i] * konventiert[i + 1];
break;
// more case statements
default:
// error
}
}