Я пишу программу, которая вычисляет строки и вычисляет их с приоритетом операций. Я беру строки с подстрокой, и я написал метод, который преобразует строковые числа в целочисленное значение, мне просто нужно написать калькулятор. Эта строка может быть как 5 * 20 / 2-3 + 4 Застрял в петлях. В этом коде 5 * 5 * 5 верните мне 2225 и не могу найти почему. Если я смогу решить проблему, другим операторам будет легко.
import java.util.Scanner;
class Sayibulucudemo{
public int deger(String sentence){
int length=sentence.length(); //METHOD THAT CAST STRING TO INTEGER
int sayi =0;
int sayiyardimcisi=0;
for (sayiyardimcisi=0;sayiyardimcisi<length;sayiyardimcisi++) {
int basamakatayıcısı=(int)Math.pow(10,length-1-(sayiyardimcisi));
sayi+=basamakatayıcısı*(sentence.charAt(sayiyardimcisi)-'0');
length = sentence.length();
}
return sayi;
}
}
public class ardanin{
public static void main(String[] args) {
Scanner klavye = new Scanner(System.in);
Sayibulucudemo obje = new Sayibulucudemo();
String sentence = "("+klavye.nextLine()+")";
String s1="";//önü
String s2="";//arkası
String s4="";
String s5="";
int a=0;
int b=0;
int c=0;
int d=0;
int e=0;
int f=0;
int o=0;
String sayininsolu="";
String sayininsagi="";
int sayininsolusayi=0;
int sayininsagisayi=0;
while(sentence.contains("(")){
while(sentence.contains("*")){
for(a=0;a<sentence.length();a++){
if(sentence.charAt(a)=='*'){
for(b=a-1;b>=0;b--){
if(sentence.charAt(b)=='*'||sentence.charAt(b)=='/'||sentence.charAt(b)=='%'||sentence.charAt(b)=='+'||sentence.charAt(b)=='-'||sentence.charAt(b)=='('||sentence.charAt(b)=='('){
s4=sentence.substring(b+1,a);
d=obje.deger(s4);
o=a;
a=0;
break;
}
}
for(c=o+1;c<sentence.length()-1;c=c){
c+=1;
if (sentence.charAt(c)=='*'||sentence.charAt(c)=='/'||sentence.charAt(c)=='%'||sentence.charAt(c)=='+'||sentence.charAt(c)=='-'||sentence.charAt(c)==')'||sentence.charAt(c)=='(') {
s5=sentence.substring(o+1,c);
e=obje.deger(s5);
}
else{
continue;
}
}
f=d*e;
sentence=""+f;
}
}
}
System.out.println(sentence);
}
}
}