meu programa recebe strings com os simbolos:
Conectivos: >, *, ^, v e ¬ ;
Formulas: letras maiusculas de A a Z , [A-Z] ;
Simbolos de Pontuação: ( e ) ;
Estou com problemas para separar os niveis da expressão:
Tenho de separar os conectivos das letras e expressões entre parenteses.
quando recebo: ivH^(BC)[/i]
tenho de separar:
i
v
H
^
(BC)[/i]
:?
public class Separador {
public void separador(String s){
for(int i = 0; i < s.length(); i++){
if(s.charAt(i)=='('){
for(;s.charAt(i)!=')';i++){
System.out.print(s.charAt(i));
}
System.out.println(s.charAt(i));
}
else
System.out.println(s.charAt(i));
}
}
public static void main(String[] args) {
new Separador().separador("(A>B)vH^(B*C)");
}
}
Tem problema quando existem expressões com mais de dois níveis…
teste por exemplo: ((G>T)>B)vH^(BC)
a saida deveria ser:
((G>T)>B)
v
H
^
(BC)
tenta:
public class Separador {
public void separador(String s){
int countParenteses = 0;
for(int i = 0; i < s.length(); i++){
if(s.charAt(i)=='('){
do{
if(s.charAt(i)=='(')
++countParenteses;
else if(s.charAt(i)==')')
--countParenteses;
System.out.print(s.charAt(i));
i++;
}while(countParenteses!=0);
i--;
System.out.println();
}
else
System.out.println(s.charAt(i));
}
}
public static void main(String[] args) {
//new Separador().separador("(A>B)vH^(B*C)");
new Separador().separador("((G>T)>B)vH^(B*C)");
}
}