[RESOLVIDO] Validação de String

Estou fazendo a validação de string, não devo ter espaços em branco e também não deve aceitar números.
Fiz o seguinte código:

package validacao;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.JOptionPane;

public class ValidarString {
	String nome;


	public String testarNome(String nome){
		this.nome = nome;
		if(nome == ""){
			System.out.println("O campo não pode ficar em branco!");

		}
		else{
			Pattern pattern = new Pattern("[0-9]");
			Matcher matcher = pattern.matcher(nome);
			if(matcher.find()){
				System.out.println("Não deve conter caracteres!");
			}
			else{
				return nome;
			}
		}
	}


	public static void main(String[] args){
		ValidarString vs = new ValidarString();
		vs.testarNome("Kamilla7483");

	}

}

Só que estou tendo erro quando faço Pattern pattern = new Pattern("[0-9]").

Assim:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	The constructor Pattern(String) is undefined

	at validacao.ValidarString.testarNome(ValidarString.java:19)
	at validacao.ValidarString.main(ValidarString.java:33)

Como eu conserto? T.T

Obrigada!

Olha essa mesagem está dizendo que não existe na sua classe Pattern um constructor que tenha como parâmetro uma String.

public Pattern(String something) {}

Acho que isso deva resolver.

Mudei:

package validacao;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JOptionPane;

public class ValidarString {
	String nome;

	public Pattern(String nome){
		
	}
	
	public String testarNome(String nome){
		this.nome = nome;
		if(nome == ""){
			System.out.println("O campo não pode ficar em branco!");

		}
		else{
			Pattern pattern = new Pattern("[0-9]");
			Matcher matcher = pattern.matcher(nome);
			if(matcher.find()){
				System.out.println("Não deve conter caracteres!");
			}
			else{
				return nome;
			}
		}
	}


	public static void main(String[] args){
		ValidarString vs = new ValidarString();
		vs.testarNome("Kamilla7483");

	}

}

E o erro:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	The constructor Pattern(String) is undefined

	at validacao.ValidarString.testarNome(ValidarString.java:21)
	at validacao.ValidarString.main(ValidarString.java:35)

=/

Se você olhar bem, você vai perceber que você criou um método Pattern na classe ValidarString como se ele fosse um construtor da classe, mas não é, faça uma classe dentro da classe ValidarString com o nome Pattern, é aí que está o erro do seu programa!

No lugar de:

new Pattern("[0-9]");  

Use

Pattern.compile("[0-9]");

Agora o problema mudou…

package validacao;

import java.util.regex.Matcher;



public class ValidarString {
	String nome;

	class Pattern{
		Pattern(String nome){

		}

		public Matcher matcher(String nome) {

			return null;
		}

	}

	public String testarNome(String nome){
		this.nome = nome;
		if(nome == ""){
			System.out.println("O campo não pode ficar em branco!");

		}
		else{
			Pattern pattern = new Pattern("[0-9]");
			Matcher matcher = pattern.matcher(nome);
			if(matcher.find()){
				System.out.println("Não deve conter caracteres!");
			}

		}
		return nome;
	}


	public static void main(String[] args){
		ValidarString vs = new ValidarString();
		vs.testarNome("Kamilla7483");

	}

}
Exception in thread "main" java.lang.NullPointerException
	at validacao.ValidarString.testarNome(ValidarString.java:31)
	at validacao.ValidarString.main(ValidarString.java:42)

Cara… se eu criar a classe Pattern, terei que criar o método matcher… ele vai ter a mesma função que tinha quando eu importei o Pattern? =S

Acho que deu certo! XD

Olha só como ficou…

package validacao;

import java.util.regex.Matcher;
import java.util.regex.Pattern;



public class ValidarString {
	String nome;
	
	public String testarNome(String nome){
		this.nome = nome;
		if(nome == ""){
			System.out.println("O campo não pode ficar em branco!");

		}
		else{
			Pattern pattern = Pattern.compile("[0-9]");
			Matcher matcher = pattern.matcher(nome);
			if(matcher.find()){
				System.out.println("Não deve conter números!");
			}

		}
		return nome;
	}


	public static void main(String[] args){
		ValidarString vs = new ValidarString();
		vs.testarNome("Kamilla7483");

	}

}

Yeah! Deu certo! Obrigada, gente! Muito obrigada! =D

Só um detalhe… essa comparação está errada:

if(nome == ""){  

Teste assim:

if(nome.isEmpty()){  

== não funciona para Strings. Outra opção é usar equals:

if (nome.equals(""))

Mas o isEmpty() é mais claro.

1 curtida