Я написал программу для проверки правильности заданного математического выражения, но в трех тестовых примерах, которые я взял из Интернета, два из них получили правильный вывод, а один из тестовых примеров получил неправильный вывод, но я не знаете почему ..?
Тестовые случаи, которые я получил правильный вывод: "(a + b) (a * b)" и "((a + b)". Тестовый случай, который я получаю неправильно вывод "(ab) (ab +)"
Код, который я пробовал:
public static void main(String[] args) {
// TODO code application logic here
Scanner sc=new Scanner(System.in);
String str=sc.next();
int l=str.length();
int a1=0,t=0,k=0;
for(int i=0;i<l;i++){
if(str.charAt(i)=='('){
a1++;
}else if(str.charAt(i)==')'){
a1--;
}
if(str.charAt(i)=='+'||str.charAt(i)=='-'||str.charAt(i)=='*'||str.charAt(i)=='/'){
k++;
if(str.charAt(--i)>='a'&&str.charAt(--i)<='z'&&str.charAt(++i)>='a'&&str.charAt(++i)<='z'){
t++;
}
}
}
if(a1==0&&t==k){
System.out.println("valid");
}else{
System.out.println("invalid");
}
}
Выход, ожидаемый для тестового примера 3, недействителен, но дает действительный вывод.