Estou tentando escrever uma classe com 2 métodos. No método do main ela pega o nome digitado pelo usuário, e no outro método ela verifica se o usuário digitou uma letra inválida (tipo: &, $ e #) e retorna qual é a letra inválida como mensagem de que não pode inserir esta letra, tipo uma mensagem assim: " Nome inválido &, digite novamente".
Escrevi este código abaixo, mais ele não está fazendo isso que retratei acima, e não estou conseguindo ver o que está faltando ou o que precisa ser modificado.
Segue o código abaixo:
[code]import java.util.Scanner;
public class CaracEspec {
public static void main ( String[] args ) throws Exception{
System.out.println( "Entre com o nome" );
Scanner input = new Scanner( System.in );
String nome = input.nextLine( );
CaracEspec aa = new CaracEspec( );
aa.getCaracterEspecial( nome );
}
public void getCaracterEspecial( String nome ){
String [] str = {"$", “&”, “#”};
String auxiliar = null;
for( int i = 0; i < str.length; i++){
if( nome == str[i] )
auxiliar = nome;
}
}
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CaracEspec {
public static void main ( String[] args ) throws Exception{
System.out.println( "Entre com o nome" );
Scanner input = new Scanner( System.in );
isInvalid(input);
}
public static void isInvalid(Scanner input ){
//Expressão Regular contêm $ ou & ou #
//Diz em que posição esses elementos se encontram no input
Pattern p = Pattern.compile("\$|[&]|[#]");
Matcher m = p.matcher(input.nextLine());
while(m.find()){
System.out.println(m.start());
}
}
}
Você está querendo fazer uma comparação de Strings, o que não é o caso utilizar o operador “==”.
O ideal para esse caso seria utilizar expressões regulares, assim como nosso amigo mostrou acima. Como deu
para notar que você é iniciante sugiro que utilize “contains” para a comparação, assim como foi sugerido pelo nosso amigo acima.
De todo jeito sugiro também que estude expressões regulares e principalmente comparações.
E tem mais… colocaste toda a lógica pra tratar o erro, mas não faz nada com ele, nem exibe mensagem nem nada… O sistema não adivinha pensamento de criar o que queres que ele faça… Você tem que ir lá e especificar a ele as instruções…
Recomendo que você estude mais Lógica de programação…