Erro esquisito ao meu ver

Pessoal,
Estou dando uma lida num arigos, matérias e tópicos respondidos daki da comunidade e talz…
Fiz alguns sisteminhas em modo texto e gráfico tbm…
Daí fiz esse aki

[quote]/* Modo gráfico */

import javax.swing.JOptionPane;

class ife{
public static void main(String[] args){
String cliRe;
int numero;

	cliRe = JOptionPane.showInputDialog(
		"Coloque um número para saber se é impar ou par");
	numero = Integer.parseInt( cliRe );

	// Fazendo um if()...

	if( numero == 0 ){
		JOptionPane.showMessageDialog(null,
			"O numero 0 é neutro!!",
			"ah, assim num vale...",
			JOptionPane.INFORMATION_MESSAGE);
		System.exit(0);
	}
	if( (numero % 2) == 0 ){
		JOptionPane.showMessageDialog(null,
			"O número " + numero + " é par!",
			"Resultados",
			JOptionPane.INFORMATION_MESSAGE);
		System.exit(0);
	}
	if( (numero % 2) != 0){
		JOptionPane.showMessageDialog(null,
			"O numero " + numero + " é impar!",
			"Resultados",
			JOptionPane.INFORMATION_MESSAGE);
	System.exit(0);
	}
}

}[/quote]

Ele retorna se o numero digitado é par ou impar, ele executa legal e talz…
Mas se eu digitar 11 caracteres ele retorna isso:

[quote]C:\root\java\bin>java -cp H:\home\java\estudos\control ife
Exception in thread “main” java.lang.NumberFormatException: For input string: “1
2345678910”
at java.lang.NumberFormatException.forInputString(NumberFormatException.
java:48)
at java.lang.Integer.parseInt(Integer.java:480)
at java.lang.Integer.parseInt(Integer.java:518)
at ife.main(ife.java:12) [/quote]

Se eu digitar até 10 ele vai de boas…
O que poderá ser ?

até… :slight_smile:

N e erro n!

E que estoura a capacidade da variavel!!

Vc tem q usar outro tipo de variavel pra n acontecer isso com vc!

Os tipos inteiros vao de 922337203685477807 positivos ate 2147483648 negativos

Dica!!

usa a variavel de tipo long

Espero ter ajudado!

Abracao e te +

A blz…
Vlw cara pela informação …
A propósito, se o cara digitar ‘a’ no campo dá erro, pois a não é int, então teria como eu contornar esse erro e no lugar dele retornar uma mensagem gráfica(caso eu esteja usando grafico) ou texto (caso eu esteja usando texto) ?

— Editado ----

Eu mudei o int numero para long numero compilei novamente e rodei… deu na mesma…
Terei que mudar tbm a parte numero = Integer.parseInt() ? se sim, o que eu poderia colocar?

até… :slight_smile:

vc vai ter q mudar o Integer.parseInt() pra Long.parseLong()…

e vc pode por isso dentro de um bloco try-catch, dai se der erro vc vai poder mostrar a msg do jeito q vc quiser…

[quote=“Felipe”]vc vai ter q mudar o Integer.parseInt() pra Long.parseLong()…

e vc pode por isso dentro de um bloco try-catch, dai se der erro vc vai poder mostrar a msg do jeito q vc quiser…[/quote]

Poderia dar um exemplo de try-catch ?

até… :slight_smile:

Long x;
try{
 x = Long.parseLong(JOptionPane.showInputDialog(null, "Digite um numero"));
}
catch (NumberFormatException erro){
 System.out.println("O numero digitado eh invalido!");
}
catch (NullPointerException erro){
 System.out.println("O dialogo foi cancelado!");
}

[quote=“Felipe”] Long x; try{ x = Long.parseLong(JOptionPane.showInputDialog(null, "Digite um numero")); } catch (NumberFormatException erro){ System.out.println("O numero digitado eh invalido!"); } catch (NullPointerException erro){ System.out.println("O dialogo foi cancelado!"); } [/quote]

Vlw…
Mas no caso ele sempre retorna o primeiro…
Se eu deixar em branco não deveria ir para o segundo ? NullPointer ?

até… :slight_smile:

se estiver em branco vai pro primeiro, o segundo eh se for null, ou seja, se o usuario clicar em cancelar

ah blz…
É que eu entendia Null como “vazio” em “branco”…

até… :slight_smile: