Código com falha. Me ajudem!

Pessoal por favor me ajudemm!

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;
}
}

}[/code]

Obrigadão,

E ai vick, blz?

Cara seguinte, teu problema está na comparação das Strings:

if( nome == str[i] )

Isto vai verificar se ambos os objetos são iguais e não o seu conteudo. Tente usar o método contains da String, vai resolver o seu problema:

if( nome.contains(str[i]) )
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());
		}
	}

}

Olá vick01;

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.

if( nome.contains(str[i]) )

Boa sorte.

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…

Abs [] e bons estudos…