Ir para conteúdo
Fórum Script Brasil
  • 0

TRY BUGADO


blacksilva

Pergunta

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

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.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
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,referencia=0;
        boolean flag = false;

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

testa agora e ver se da certo. não e a melhor lógica mais mais serve kkkk. agora vou ter que sair qualquer coisa manda uma mensagem que de noite eu respondo. 

Link para o comentário
Compartilhar em outros sites

  • 0

Deu quase certo cara, porem na hora de mostrar o vetor B com os numeros negativos ele mostra so alguns numeros negativos digitados . Eu fiz assim e deu certo porem se digitar duas vezes uma letra ele da erro asdhasdhsaudua


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;
        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++;
                }// fim do for
            } catch (InputMismatchException e) {
                System.out.println("Informe apenas numeros!");
                teclado.nextLine();//limpa o buffer
                System.out.println("Continue...");
            }// fim do catch
            for (int p = cont2; p < A.length; p++) {
                A[p] = teclado.nextInt();
            }// fim do for
            for (int y = 0; y < A.length; y++) {
                if (A[y] <= 0) {
                    b[y] = A[y];
                    System.out.println("Valores no vetor B:" + b[y]);
                }// fim do if
            }// fim do for
            System.out.println("-----------------------------------------");
            for (int j = 0; j < 10; j++) {
                System.out.println("Valores no vetor A: " + A[j]);
            }// fim do for
            break;
        }// fim do while
    }// fim do metodo
}// fim do progroma

 

Link para o comentário
Compartilhar em outros sites

  • 0

o primeiro código que eu mandei ta certo o unico problema e que o seu vetor A e de 10 posiçoes e seu vetor b também. quando ele entra no if e verifica os menores valores ele armazena em b só que na posição que se encontra o i. então seu cont vai contar normalmente os numeros de vezes que entrar números negativos. e quando você for imprimir no for o vetor b ele vai percorrer somente os números ate onde seu cont contou. ou seja seu vetor b vai imprimir posiçoes com valores que estao vazios que não foram preenchidos. faz o teste no seu for coloca l<b.length e você vai ver seus valores. agora se você quiser apenas os valores que foram  preenchidos vai ter que entrar uma outra lógica la dentro do if. qualquer coisa e só perguntar  

Editado por niltinho
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...