Try Catch

11 respostas
rogeriovaladaoti

Ola Galera, Sou novo no java e tenho uma duvida,fazer um tratamento, para que o JoptionPane, não aceite numeros so Letras, ao contrario consegui fazer , para nao aceitar letras segue o codigo:

package Tray_Catch;
import javax.swing.JOptionPane;

public class Try_Catch_Numeros {

public static void main(String[] args) {

double nota1,nota2,media;

try

{

nota1 = Double.parseDouble(JOptionPane.showInputDialog("Digite nota 1: "));

nota2 = Double.parseDouble(JOptionPane.showInputDialog("Digite nota 2: "));

media = (nota1 + nota2)/2;

JOptionPane.showMessageDialog(null, "a Media foi: " + media);

}

catch(NumberFormatException e)

{

JOptionPane.showMessageDialog(null,“Digite Somente Numeros”);

}

}

}

11 Respostas

danrox.sa

Não entendi sua indagação, executei aqui rodou beleza…

rogeriovaladaoti

Desculpe acho que nao expliquei direito, este codigo ai impede que eu digite letras , no Joptionpane, ou seja so posso digitar numeros,
quero fazer agora o contrario , digitar apenas letras e ele nao aceitar numeros , Ex: como num cadastro de clientes , nao posso permitir o usuario digitar numeros no campo nome, queria saber como trato isto, e Obrigado pela Atenção…

F

Use regex.
Exemplo:

boolean soTemLetra = nota1.matches("[a-zA-Z\s]+"); if (soTemLetra) System.out.print("Só tem letra!!!");

rogeriovaladaoti

Nao consegui, poderiam postar um codigo completo para mim como por exemplo , tenho uma var nome , e quero que so digitem letras ,
no joptionpane, nao aceitar numeros , o codigo que recebi nao consegui implementar . obrigado…

Patrick_Bahia
tipo, o que vc poderia fazer é algo assim:
String texto = JOptionPane.showInputDialog(null,"Digite uma letra");

try{
 int aux = Integer.parseInt(texto);
} catch(Exception e) {
  System.out.println(""Digite somente números);
}

outra solução:

[code]

String texto = JOptionPane.showInputDialog(null,"Digite uma letra");
char[] numeros = new char[]{'0','1','2','3','4','5','6','7','8','9'}

for(int i = 0;i<numeros.length;i++) {
for(int j = 0;j<texto.length();j++) {
if(texto.charAt(j) == numeros[i])
System.out.println("Digite somente números");
}
}

>

rogeriovaladaoti
Galera Funcionou Blz desta forma, porem se digito um digito ele roda a menssagem 1 vez normal, mais se digito 2 ou tres assim em diante ele roda a menssagem equivalente a quantos digitos eu colocar no jOptionPane.Ex: se eu colocar 55 dois digitos ele vai dar a menssagem "Digite somente Letras", 2 vezes e assim em diante , gostaria que independente do numero de digitos ele me desse a menssagem apenas 1 vez.
package Tray_Catch;

import javax.swing.JOptionPane;

public class Try_Catch_String {

	public static void main(String[] args) {
	    int i,j;
	    char[]numeros = new char[]{'0','1','2','3','4','5','6','7','8','9'}; 
	    String texto;
		
		texto = JOptionPane.showInputDialog(null,"Digite uma letra");  

		for(i=0; i<numeros.length; i++) { 
		for(j=0; j<texto.length(); j++) { 			
		{
		if(texto.charAt(j) == numeros[i]) 
		JOptionPane.showMessageDialog(null,"Digite somente Letras"); 
		}	
	   }
	  } 
	 }
    }
[/list]
adriano_si
rogeriovaladaoti:
Galera Funcionou Blz desta forma, porem se digito um digito ele roda a menssagem 1 vez normal, mais se digito 2 ou tres assim em diante ele roda a menssagem equivalente a quantos digitos eu colocar no jOptionPane.Ex: se eu colocar 55 dois digitos ele vai dar a menssagem "Digite somente Letras", 2 vezes e assim em diante , gostaria que independente do numero de digitos ele me desse a menssagem apenas 1 vez.
package Tray_Catch;

import javax.swing.JOptionPane;

public class Try_Catch_String {

	public static void main(String[] args) {
	    int i,j;
	    char[]numeros = new char[]{'0','1','2','3','4','5','6','7','8','9'}; 
	    String texto;
		
		texto = JOptionPane.showInputDialog(null,"Digite uma letra");  

		for(i=0; i<numeros.length; i++) { 
		for(j=0; j<texto.length(); j++) { 			
		{
		if(texto.charAt(j) == numeros[i]) 
		JOptionPane.showMessageDialog(null,"Digite somente Letras"); 
		}	
	   }
	  } 
	 }
    }
[/list]

Cara... se seu JOptionPane está dentro do For, não tem jeito, toda vez que ele passar nessa sequencia ele vai Exibir o JOptionPane...

Dica, você precisa retirar do Loop FOR e ter um jeito de marcar se há Somentes Letras ou não... Algo do tipo (SIM ou NÃO) ou (VERDADEIRO ou FALSE)

Entendeu ??

[EDIT] - Outra coisa, só pra eu não ficar com a consciência pesada, começa a dar uma pesquisada sobre identação de código e padrão de Nomenclatura Java... Esse nome de classe tá péssimo cara e a identação do teu código as vezes prejudica a leitura do mesmo...

Abs []

rogeriovaladaoti

Amigo, Valeu muito pelas Dicas, vou ficar atento com identação de código e padrão de Nomenclatura Java…

Abs []

adriano_si

Conseguiste implementar as mudanças ??? Posta aí como ficou…

Patrick_Bahia

Galera, foi erro meu

tipo

coloca um

return

depois do JOptionPane

rogeriovaladaoti

Galera um amigo de outro forum me passou este codigo e funcionou blz, mais não entendi nada, do codigo

package Tray_Catch;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

import javax.swing.JOptionPane;

public class Tratamento_Excessoes_String {

	public static void main(String[] args) {
		Matcher nome;
		Pattern p = Pattern.compile("\d+");

		nome = p.matcher(JOptionPane.showInputDialog("Digite Seu Nome.: "));

		if (nome.find()) {

			JOptionPane.showMessageDialog(null,"Numeros Não São Permitidos !");
		}
	}
}
Criado 29 de outubro de 2010
Ultima resposta 1 de nov. de 2010
Respostas 11
Participantes 5