Estava eu pesquisando sobre comparação de strings até que encontrei esse tópico. Tentei utilizar o código proposto junto com o while e não deu certo. segue abaixo o que eu fiz:
[code]char meunu;
//o user deve digitar s ou n
menu = Console.readln("Digite o que deseja fazer: ");
while (menu.compareTo("s")<>0 && menu.compareTo("n")<>0){
screen.tela_ini();
system.out.println("Digite um valor válido!!!");
system.out.println();
menu = Console.readln("Digite o que deseja fazer: ");
}[/code]
O que eu qro fazer, na verdade é somente comparar se o char digitado pelo usuário(na var menu) é diferente de s ou n, se for eu qro q ele continue pedindo q o user insira s ou n.
Se puderem me ajudar Obrigado!!
Alf, direto de Melmak.
[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - Ratinho[/color][/size] :joia:
verifique se seu método Console.readln() não retorna uma String ao invés de char.
Lembrando, com exceção ao tipo primitivos de números, tudo em java é objeto. Portanto:
Acabei caindo no mesmo dilema da minha 1º menssagem. Eu realmente preciso usar o compareTo(). Vou dizer realmente o que preciso: o user vai escrever algo na tela que eu vou validar, pois essa string terá um certo padrão, no caso terá q ficar dessa maneira “A-1”. Tem que haver um hífen no meio, pq logo após eu jogarei isso num StringTokenizer que separará a string em duas partes pela indicação do hífen, se eu não tiver esse hífen na hora de executar ocorre um exception tenebroso: “NoSuchElementException” que eu nunca tinha visto na minha vida e gostaria de contornar a situação pra não usar tratamento de exceptions. Então a idéia foi capturar o segundo caracter dessa string e verificar se é igual a “-”, pq senão fosse igual o cod do StringTokenizer nem seria executado. segue o que eu fiz:
[code]static boolean ver_pos(String pos){
//Separa o cod da Ref digitada
StringTokenizer sep;
Cara, eu só dei uma olhada meio por cima no tópico, mas vou dar uma sugestão.
Tenta fazer um casting para char dentro do compareTo, ou então use aspas simples ao invés de aspas duplas (essa última sugestão eu acho melhor que a primeira).
Assim:
tes.compareTo(’-’)
ou então:
tes.compareTo((char)"-")
Teoricamente, se você usar uma string direto lá dentro você teria que colocar a instrução dentro de um try-catch para ClassCastException.
a='b';
b='b';
if (a==b) System.out.println("a e b são o mesmo caracter");
else System.out.println("a eh diferente de b");
não consegui fazer desse jeito… Então resolvi apelar para strings mesmo, que são bem mais fáceis de se lidar. O que eu fiz foi colocar a referência que eu queira numa string, e para separá-la usei o “string.substring(pos ini, pos fin)”, onde string é o nome da variável, substring o comando para capturar um pedaço da string, pos ini é a posição inicial onde se deseja capturar os caracteres começando pela posição 0, e a pos fin é a pos final até onde deseja-se capturar o pedaço da string. Não sei se vcs ja conheciam, mas segue a dica!!!
Só para mostrar que dá para fazer:[code]import java.io.*;
public class Compara {
public static void main (String[] args) {
char menu;
BufferedReader Console = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Digite o que deseja fazer: ");
try{
menu = (char)Console.read();
while (!((menu==‘s’) || (menu==‘S’))){
System.out.println(“Digite um valor válido!!!”);
System.out.println();
System.out.print("Digite o que deseja fazer: ");
menu = (char)Console.read();
}
}
catch(java.io.IOException e) {};