TRY BUGADO

17/11/2016

0

Galera to com um problema aqui no meu codigo, quando é digitado uma letra no vetor ele trata e mostra a mensagem "Informe apenas numeros!", porem ele finaliza o programa e é para continuar da onde o vetor parou. Ex: 1 2 3 X "Informe apenas numeros!" 4 5 6.... Se alguém puder me ajudar agradeço.

import java.util.InputMismatchException;
import java.util.Scanner;

public class Questao1 {

    public static void main(String[] args) {
        Scanner teclado = new Scanner(System.in);
        int A[] = new int[10];
        int b[] = new int[10];
        int cont2 = 0, cont = 0;
        boolean flag = false;

        while (!flag) {
            try {
                System.out.println("Informe 10 valores para o vetor!");
                for (int i = 0; i < A.length; i++) {
                    A[i] = teclado.nextInt();
                    cont2++;
                    if (A[i] <= 0) {
                        b[i] = A[i];
                        cont++;
                    }// fim do if
                }// fim do for
                for (int j = 0; j < 10; j++) {
                    System.out.println("Valores no vetor A: " + A[j]);
                }// fim do for
                System.out.println("-----------------------------------------");
                for (int l = 0; l < cont; l++) {
                    System.out.println("Valores no vetor B: " + b[l]);
                }// fim do for
            } catch (InputMismatchException e) {
                System.out.println("Informe apenas numeros!");
                flag = true;
                teclado.nextLine();//limpa o buffer
            }// fim do catch
        }// fim do while
    }// fim do metodo
}// fim do progroma
Lucas Silva

Lucas Silva

Responder

Post mais votado

17/11/2016

Olá Lucas!

Verifica no código a baixo a correção.

public class Questao1 {
	
	public static void main(String[] args) {
        Scanner teclado = new Scanner(System.in);
        int A[] = new int[10];
        int b[] = new int[10];
        int cont2 = 0, cont = 0;
        boolean flag = true;
 
        while (flag) {
            try {
                System.out.println("Informe 10 valores para o vetor!");
                for (int i = 0; i < A.length; i++) {
                    A[i] = teclado.nextInt();
                    cont2++;
                    if (A[i] <= 0) {
                        b[i] = A[i];
                        cont++;
                    }// fim do if              
                }// fim do for
                for (int j = 0; j < 10; j++) {
                    System.out.println("Valores no vetor A: " + A[j]);
                }// fim do for
                System.out.println("-----------------------------------------");
                for (int l = 0; l < cont; l++) {
                    System.out.println("Valores no vetor B: " + b[l]);
                }// fim do for                
                
                // Necessário definir aqui dentro em que momento a flag será false. 
                // Defini aqui para não ficar em lup infinito.
                flag = false;
                
            } catch (InputMismatchException e) {
                System.out.println("Informe apenas numeros!");                
                teclado.nextLine();//limpa o buffer
            } // fim do catch        	
        }// fim do while
    }// fim do metodo

}

Angelo Santos

Angelo Santos
Responder

Mais Posts

17/11/2016

Lucas Silva

nao roudou como esperado :/
Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar