Olá pessoal, to fazendo um programinha em Java, sem interface gráfica, eu quero criar um método que ao pedir pro usuário informar o CPF, ele iria aceitar apenas números, por exemplo: O cara ia digitar uma letra, e não ia preencher o campo, o campo será preenchido apenas se ele digitar números…
Estava tentando usar aquela classe KeyPressed, mas não consigo, ainda sou muito leigo em Java e uma ajuda seria muito bem vinda, obrigado.
// Se o usuário digitar letra
// Não aceite
// Senão
// aceite
cria um campo JFormatedTextField ao invés do TextField
JFormatedTextField jftf = new JFormatedTextField("###.###.###-##")
[quote=mayckonx]Olá pessoal, to fazendo um programinha em Java, sem interface gráfica, eu quero criar um método que ao pedir pro usuário informar o CPF, ele iria aceitar apenas números, por exemplo: O cara ia digitar uma letra, e não ia preencher o campo, o campo será preenchido apenas se ele digitar números…
Estava tentando usar aquela classe KeyPressed, mas não consigo, ainda sou muito leigo em Java e uma ajuda seria muito bem vinda, obrigado.
// Se o usuário digitar letra
// Não aceite
// Senão
// aceite
[/quote]
Bom dependendo da IDE que vc esteja usando, eu uso o NetBeans 6.9.1 e eu faço da seguinte forma:
1º vc sem te criar as MaskFormatter!
public class CasdastroEmpreiteira extends javax.swing.JFrame {
MaskFormatter Formato_cpf
2º No JTextField que esta seu CPF clique com o botão direito e vá em Proriedades
em seguida
em CODE ou CODIGO
e Procure por Pré-Codigo
try
{
Formato_cpf = new MaskFormatter("###.###.###-##");
}
catch(Exception erro)
{
JOptionPane.showMessageDialog(null, "Não foi possivel setar");
}
Em seguida vá em codigo personalizado
e
escreva:
new JFormattedTextField (Formato_cpf);
Depois e so rodar e ver se deu certo
Galera, não entendi muito bem. Olhem só, eu estou usando o Eclipse, e estamos fazendo tudo usando System.out.println e Scanner pra ler, eu to lendo uma lista de pessoas e quero quemeu CPF não aceite letras. Meu CPF não está em JTextField.
public class Pessoa {
private Pessoa proximo;
private String nome;
private String endereço;
private String CPF;
public String getEndereço() {
return endereço;
}
public void setEndereço(String endereço) {
this.endereço = endereço;
}
public String getCPF() {
return CPF;
}
public boolean setCPF(String cPF) {
this.CPF = cPF;
if((this.CPF!=null)&&(this.CPF.length()==11)){
return true;
}
else{
return false;
}
}
public Pessoa(){
this.proximo = null;
this.nome = "";
this.CPF = "";
}
public Pessoa getProximo() {
return proximo;
}
public void setProximo(Pessoa proximo) {
this.proximo = proximo;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String toString() {
return this.getNome();
}
}
import java.io.*;
public class Lista {
File arquivo = new File("/Users/MaYcKoN/Desktop/Lista.csv");
private Pessoa primeiro;
public Lista() {
this.primeiro = null;
}
public void inserir(Pessoa pessoa) {
if (this.primeiro == null)
this.primeiro = pessoa;
else {
Pessoa iterador;
for (iterador = this.primeiro; iterador.getProximo() != null; iterador = iterador
.getProximo());
iterador.setProximo(pessoa);
}
}
public void remover() {
if (this.primeiro != null) {
this.primeiro = this.primeiro.getProximo();
}
}
public Pessoa getPrimeiro() {
return primeiro;
}
public void setPrimeiro(Pessoa primeiro) {
this.primeiro = primeiro;
}
public void removerNoFinal() {
Pessoa iterador;
if (this.primeiro != null) {
if (this.primeiro.getProximo() == null) {
this.primeiro = null;
return;
}
}
iterador = this.primeiro;
for (; iterador.getProximo() != null; iterador = iterador.getProximo()) {
if (iterador.getProximo().getProximo() == null) {
iterador.setProximo(null);
break;
}
}
}
}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class Principal {
public static void main(String args[]) {
File arquivo = new File("/Users/MaYcKoN/Desktop/Lista.csv");
Scanner input = new Scanner(System.in);
Lista StudentsGold = new Lista();
Pessoa iterador;
int op;
do {
System.out.println("Digite 1 para inserir uma pessoa na Lista");
System.out
.println("Digite 2 para remover uma pessoa no inicio da Lista");
System.out
.println("Digite 3 para remover uma pessoa no final da Lista");
System.out.println("Digite 4 para mostrar a Lista");
System.out.println("Digite 5 para gravar a Lista");
System.out.println("Digite 6 para recuperar a Lista");
System.out.println("Digite 0 para sair");
op = input.nextInt();
input.useDelimiter("\n");
switch (op) {
case 1:
System.out.println("Digite o nome da Pessoa");
iterador = new Pessoa();
iterador.setNome(input.next());
System.out.println("Digite o endereço da Pessoa");
iterador.setEndereço(input.next());
System.out.println("Digite o CPF, apenas números.");
iterador.setCPF(input.next());
StudentsGold.inserir(iterador);
break;
case 2:
StudentsGold.remover();
break;
case 3:
StudentsGold.removerNoFinal();
break;
case 4:
if (StudentsGold.getPrimeiro() != null) {
for (iterador = StudentsGold.getPrimeiro(); iterador
.getProximo() != null; iterador = iterador
.getProximo()){
System.out.println("Nome: "+iterador.getNome()+"\nEndereço: "+iterador.getEndereço()+"\nCPF: "+iterador.getCPF());
System.out.println();
}
System.out.println("Nome: "+iterador.getNome()+"\nEndereço: "+iterador.getEndereço()+"\nCPF: "+iterador.getCPF());
System.out.println();
} else
System.out.println("Lista Vazia");
break;
case 5:
try {
FileWriter escrever = new FileWriter(arquivo);
BufferedWriter buffer = new BufferedWriter(escrever);
if (StudentsGold.getPrimeiro() != null) {
buffer.write(StudentsGold.getPrimeiro().getNome()+" ");
buffer.write(StudentsGold.getPrimeiro().getEndereço()+" ");
buffer.write(StudentsGold.getPrimeiro().getCPF()+ " ");
buffer.newLine();
for (iterador = StudentsGold.getPrimeiro(); iterador.getProximo() != null; iterador = iterador
.getProximo()) {
buffer.write(iterador.getProximo().getNome());
buffer.write(StudentsGold.getPrimeiro().getEndereço()+" ");
buffer.write(StudentsGold.getPrimeiro().getCPF()+ " ");
buffer.newLine();
}
buffer.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
break;
case 6:
try {
FileReader ler = new FileReader(arquivo);
BufferedReader buffer = new BufferedReader(ler);
String str=null;
while ((str = buffer.readLine())!= null) {
Pessoa p = new Pessoa();
p.setNome(str); // por enquanto to recuperando só o nome.
StudentsGold.inserir(p);
}
} catch (IOException e) {
e.printStackTrace();
}
break;
}
} while (op != 0);
}
}
Fiz uma pequena verificação ali na Classe pessoa pra saber se o CPF tem 11 digitos ou não, mas nem cheguei a tratar bem isso. O que eu quero é que quando o cara for digitar uma letra, o programa não aceite, ou seja, ele vai digitar e não vai aparecer NADA, ele vai digitar apenas números e ele vai ter que digitar 11 números, se ele digitar menos, informo uma mensagem pra ele inserir 11 numeros.
kra o system.in só recebe a palavra completa… ele nao verifica letra por letra no momento da digitação
[quote=redr4gon]kra o system.in só recebe a palavra completa… ele nao verifica letra por letra no momento da digitação
[/quote]
Me desculpe, é que sou iniciante em Java, eu não entendi muito bem. Eu vou criar um objeto do tipo JFormatedTextField e vou usar esse objeto pra ler como se fosse um scanner? :oops:
Eu só quero que o usuário tenha a opção de digitar apenas números e que ele seja obrigado a digitar os 11 números
cara pelo que entendi isso é uma validação certo…
se vc colocou a mascara no campo , não vai aceitar letra…
isEmpty()
Como você é iniciante, assim como eu, deve estar achando grego o que eles estão falando… Então, pelo o que eu entendi você quer validar se o que for escrito em CPF seja apenas números, certo?
Porque você não cria um algoritmo que compare posição por posição de uma String se é letra ou numero? É só você ir na da posição do ‘0’ até o ‘9’ da tabela UNICODE, se nao for será uma letra ou caractere… Depois você passa de STRING para INTEGER. entendeu?
Segue um código para fixar idéia:
String cpf1;
int cpf2;
cpf = scanner.next(); //Aqui eu digito os números...
for(i=0;i < cpf1.lenght;i++) {
if(cpf1[i]!='1'||cpf1[i]!='2'||cpf1[i]!='3'||(...)||cpf1[i]!='9') {
System.out.println("CPF inválido!");
break;
}
}
if(i==cpf.lenght) //Quando 'i' sai do for ele terá mesmo valor que cpf.lenght, se tiver é porque checou todos os numeros e nao entrou na condição 'if', ou seja, É VÁLIDO!
cpf2 = Integer.parseInteger(cpf1); //Se for válido ele transforma de 'String' para 'Integer'.
Espero ter ajudado…
não tem como…
em C existe o getche(), que pega uma tecla junto com o Enter
em java acho que não existe
o cpf no seu programa teria que funcionar da seguinte forma em java na linha de comando
digite um numero: [3]
[Enter]
Digite um numero:[3][7]
[Enter]
sendo que você quer dessa maneira:
digite um numero:[3][7][3][…], porém em java na linha de comando não tem como, apenas no modo gráfico…