Boa tarde colegas, estou com um problema aqui assim:
~ Carlos foi a festa ^ Sara também.
tenho que substituir “Carlos foi a festa” por “P”(pode ser qualquer Caractere), o mesmo para “Sara também”, tenho q substituir por um simbolo por exemplo “Q”.
Assim ficaria a Saída:
~ P ^ Q.
agradeço desde já qualquer ajuda.
De um jeito bem grosseiro:
public class TesteReplaceString {
public static void main(String[] args) {
String s = "~ Carlos foi a festa ^ Sara também";
String s2 = s.replace("Carlos foi a festa", "P");
s2 = s2.replace("Sara também", "Q");
System.out.println(s2);
}
}
Não sei exatamente qual o sua intenção, mas acho q você deveria criar um objeto no qual possa guardar a sentença, a letra e ainda se o fato é verdade ou não. Aí você pode fazer o que quiser com esse objeto. Veja um exemplo:
public class TestePreposicao {
public static void main(String [] args) {
Preposicao P = new Preposicao("Carlos foi a festa", "P", true);
Preposicao Q = new Preposicao("Sara também", "Q", false);
new TestePreposicao().resolvePreposicao(P, Q, "^");
}
public void resolvePreposicao(Preposicao p1, Preposicao p2, String operacao){
if (operacao.equals("^")){
System.out.println(p1.getSentenca() + " " + operacao + " " + p2.getSentenca() + " = " + (p1.isVerdade() && p2.isVerdade()));
}
// Outras operações...
}
}
class Preposicao{
String sentenca;
String letra;
boolean verdade;
public Preposicao(String sentenca, String letra, boolean verdade) {
this.sentenca = sentenca;
this.letra = letra;
this.verdade = verdade;
}
public String getLetra() {
return letra;
}
public void setLetra(String letra) {
this.letra = letra;
}
public String getSentenca() {
return sentenca;
}
public void setSentenca(String sentenca) {
this.sentenca = sentenca;
}
public boolean isVerdade() {
return verdade;
}
public void setVerdade(boolean verdade) {
this.verdade = verdade;
}
}
marciosouzajunior, o grande problema é que a frase deve ser a entrada do usúario, e pode ser uma premissa simples ou composta como dei um exemplo.
Não sei se devo tratar a frase como um objeto.
Para ler uma preposição você poderia simplesmente fazer:
String preposicao = JOptionPane.showInputDialog("Informe a preposição");
String letra = JOptionPane.showInputDialog("Informe a letra");
String verdade = JOptionPane.showInputDialog("Digite 'verdade' ou 'falso'");
Preposicao X = new Preposicao(preposicao, letra, verdade.equals("verdade") ? true : false);
Para ler outras preposições você poderia trabalhar com um while e salvá-las numa lista, algo assim…
Farei alguns testes, qualquer coisa posto aqui.
Achei um código aqui do tempo da faculdade. É só teste hein…
Obs: só alterei o mapa pra bater com a sua frase…
import java.util.HashMap;
import java.util.Map;
public class TesteReplaceString {
public static void main(String[] args) {
Map<String, String> mapa = new HashMap<String, String>();
mapa.put("carlos foi a festa", "P");
mapa.put("carlos também", "P");
mapa.put("carlos não foi a festa", "~P");
mapa.put("mas carlos não", "^ ~P");
mapa.put("sara foi a festa", "Q");
mapa.put("sara também", "Q");
mapa.put("sara não foi a festa", "~Q");
mapa.put("mas sara não", "^ ~Q");
mapa.put("mas sara foi", "^ Q");
mapa.put("E", "^");
String s = "carlos não foi a festa mas sara foi";
char vetor[] = s.toCharArray();
StringBuffer sb = new StringBuffer();
for (char c : vetor) {
sb.append(c);
if (mapa.get(sb.toString().trim()) != null) {
s = s.replace(sb.toString().trim(), mapa.get(sb.toString().trim()));
sb = new StringBuffer();
}
}
System.out.println(s);
}
}
Nesse caso eu tenho que mapear todas as situações possíveis.