import java.lang.*;
class godmos{
public static StringBuffer deleter(StringBuffer s, int pos)
{
return new StringBuffer().append(s.substring(0, pos)).append(s.substring(pos + 1));
}
public String str1 = "5+7-9/9*2/4 ";
StringBuffer str0 = new StringBuffer(str1);
public static StringBuffer calculate (StringBuffer str)
{
// StringBuffer str11;
while(str.indexOf("/")!=-1 | str.indexOf("*")!=-1 ){
boolean t;
if(str.indexOf("/") < str.indexOf("*"))
{ int a1 = str.indexOf("/");
int a2 = a1+1;
int a3 = a1-1;
double tmp1 = Double.parseDouble(Character.toString(str.charAt(a3)));
double tmp2 = Double.parseDouble(Character.toString(str.charAt(a2)));
double tmp3=tmp1/tmp2;
str.delete(a3,a2+1);
str.insert(a3,tmp3);
}
if(str.indexOf("*") < str.indexOf("/"))
{ int a4 = str.indexOf("*");
int a5 = a4+1;
int a6 = a4-1;
double tmp4 = Double.parseDouble(Character.toString(str.charAt(a6)));
double tmp5 = Double.parseDouble(Character.toString(str.charAt(a5)));
double tmp6=tmp4/tmp5;
str.delete(a6,a5+1);
str.insert(a6,tmp6);
}
}
while(str.indexOf("+")!=-1 | str.indexOf("-")!=-1 ){
if(str.indexOf("+") < str.indexOf("-"))
{ int a11 = str.indexOf("+");
int a21 = a11+1;
int a31 = a11-1;
double tmp11 = Double.parseDouble(Character.toString(str.charAt(a31)));
double tmp21 = Double.parseDouble(Character.toString(str.charAt(a21)));
double tmp31=tmp11/tmp21;
str.delete(a31,a21+1);
str.insert(a31,tmp31);
}
if(str.indexOf("-") < str.indexOf("+"))
{ int a41 = str.indexOf("-");
int a51= a41+1;
int a61 = a41-1;
double tmp41 = Double.parseDouble(Character.toString(str.charAt(a61)));
double tmp51 = Double.parseDouble(Character.toString(str.charAt(a51)));
double tmp61=tmp41/tmp51;
str.delete(a61,a51+1);
str.insert(a61,tmp61);
}
}
return str;
}
StringBuffer f1 = calculate(str0);
public static void main (String[] args) {
godmos gm = new godmos();
System.out.print(gm.f1);
}
}
Andry KIT
5 уровень
привет.у меня проблема .компилятор говорит что все хорошо но консоль видает ошибку(я работаю через консоль).я хотел зделать калькулятор которий сначала делит и множит .а потом плюсует
Обсуждается
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia Volkova Java Developer в DXC Master
21 августа 2021, 21:49
Если в строке не будет символа *, но будет символ / - какое число окажется в переменной a4?
И еще у твоего кода есть одна проблема. Ты все операции производишь исходя из того, что все числа однозначные, состоят из одной цифры. Но ты выполняешь операции с double - а это значит, что результат в принципе не может состоять менее чем из трех знаков (цифра, точка, цифра).
И в целом - отдельные операции вообще лучше выносить в отдельные методы, а не писать все подряд одним полотном. Так код превращается в кашу.
0