Ir ao conteúdo

Posts recomendados

Postado

Eae galera, so novo no fórum e começando a trabalhar com java...tenho muitas duvidas e so muito iniciante as vezes nem é comando que precisa falta é logica mesmo.... mas enfim...

 

como eu criaria uma exceção por exemplo de no try ele so aceitar numero par... e quando usuario digitar um numero impar ele da o erro..?

 

 

Desde ja agradeço... 

Postado

Fiz algo rapidão, não sei se te dá alguma luz.

 

 import java.util.Scanner; import org.junit.Test; public class Exemplo1 { public static void main(String... args){Scanner sc = new Scanner(System.in);System.out.println("Favor digitar um número para verificar se é par....");int num = 0;try {num = sc.nextInt();new Exemplo1().aceitaNumeroPar(num);System.out.println("O número: "+num+" é par");}catch(NumeroInvalidoException e){//Filtrando erro...E o que vou fazer quando der esse pau? Apenas imprimir mensagem na tela...System.out.println("Número 0 é inválido para o sistema...");}catch (NumeroImparException e) {//Filtrando erro...E o que vou fazer quando der esse pau? Apenas imprimir mensagem na tela...System.out.println("Número digitado foi ímpar...");}catch (Exception e) {//Para demais erros não explicitas... Por exemplo letra...e.printStackTrace();//Apenas imprime o que tem pra mostrar...System.out.println("Pode ter digitado letra....");}} public void aceitaNumeroPar(int numero) throws NumeroImparException, NumeroInvalidoException{ if(numero==0){throw new NumeroInvalidoException();} if(numero%2!=0){throw new NumeroImparException();} }//Apenas para ser interpretado que é um Exceptionclass NumeroImparException extends Exception{ } class NumeroInvalidoException extends Exception{ } @Testpublic void testaAceitaNumeroPar() throws NumeroImparException, NumeroInvalidoException{int numero = 4;Exemplo1 ex = new Exemplo1();ex.aceitaNumeroPar(numero); numero = 6;ex.aceitaNumeroPar(numero); } @Test(expected=NumeroImparException.class)public void testaNumeroImpar() throws NumeroImparException, NumeroInvalidoException{int numero = 5;Exemplo1 ex = new Exemplo1();ex.aceitaNumeroPar(numero); numero = 7;ex.aceitaNumeroPar(numero);} @Test(expected=NumeroInvalidoException.class)public void testaValorInvalido() throws NumeroImparException, NumeroInvalidoException{int numero = 0;Exemplo1 ex = new Exemplo1();ex.aceitaNumeroPar(numero);}} 
  • 4 semanas depois...
Postado

Exceções não são algo que tu cria a vontade no Java, elas já existem, se tu for ver as API (Classes) do java, vai ver diversas exceções, como NullPointerException, NumberFormatException, entre muitas outras e cada uma delas tem regras para serem disparadas que tem que serem lidas nas APIs de cada uma dessas classes, por exemplo a NumberFormatException ocorre quanto tu tenta converter uma String para um tipo numerico, como int, se na String não tiver somente numeros, o java vai te dar o seguinte erro "NumberFormatException at..." e é para isso que serve o try/catch, para evitar que o java trave quando isso acontecer, vou escrever um trecho de codigo pra ti entender:

 

//Sem try/catch
String numero = "abc";
int num = Integer.parseInt(numero); //Se não conhece essa função, ela converte uma String para um valor do tipo int

//Depois disso o java vai reclamar de NumberFormatException pois ele não pode continuar o codigo por causa desse erro.

//Com o try/Catch
String numero="abc";
int num;
try{
	num = Integer.parseInt(numero);
}catch(NumberFormatException e){
	num=1;
}

Na segunda versão ocorre o seguinte, a variavel numero vai receber algo que não é um numero, então dentro do bloco try (tentar) o java vai tentar converter a variavel numero para uma variavel int chamada num. porém, ela não vai conseguir, pois não há só numeros dentro da String e sim letras. Sem o try/catch o java iria travar seu codigo, porém no bloco catch(pegar/capturar), tu disse que se houvesse a exception, ele deveria trata-la, nesse caso eu disse que ele deveria por 1 por padrão.

 

O que aconteceu, o java tentou converter uma string em int, mas quando falhou ele começou a executar outra parte do codigo que deveria corrigir o erro tratado.

 

Agora, para o que tu quer fazer, coloque um if/else assim:

Scanner entrada = new Scanner(System.in);
while(true){
	int num = entrada.nextInt();
    if(num%2!=0){
    	throw new Exception("Numero não é par"); //Isso irá dar um erro e irá travar seu codigo
    }
}

Não é bom usar Exception direto, o certo é pesquisar a exception correta mas estou com problemas na internet para pesquisar a mais correta para ti, talvez algo como a IllegalArgumentException seria melhor, mas não tenho certeza, mas para ti que está começando, isso não vem muito ao caso.

 

Outra coisa, não sei quão novo tu é em java ou em programação em geral, se já viu C então acho que já pode ver essas coisas, mas se nunca viu programação, eu acho que essa parte pode ser meio complicado se ainda não entendeu bem o conceito de Orientação a Objetos.

 

Pesquise tambem sobre exception java na internet, terá muitas, se colocar API e o nome da classe irá para um site da oracle que te dira tudo sobre a classe, vou colocar alguns aqui para ti:

NumberFormatException (Java Platform SE 7 )

Scanner (Java Platform SE 7 ) - Oracle Documentation

Exception (Java Platform SE 7 ) - Oracle Documentation

  • Curtir 1
Postado

Recomendo fazer com que o amigo Chronos04 falou. Comece por outros fundamentos, pois talvez você deixou alguma coisa que é importante para trás, e já partiu para uma parte do Java que não é tão básica assim. 

 

O Java é lindo, e eu adoro essa linguagem. POO na veia! 

Postado

Você provavelmente, irá resolver isso com uma função específica que faz "throw" em uma exceção específica. Por exemplo, uma função que aceite números inteiros e verifique se ela é par, se for, beleza, faz o procedimento, caso contrário, jogue um exceção.

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!