Erro na hora de printar na tela! Java | Vetores

2 respostas
vetor
Jonathan_Miritz

Opa, primeiro tópico, desculpem as mancadas…

Bom, o seguinte código executa tudo ok, porém na hora de printar, se o primeiro valor informado não for negativo, o código retorna erro, já se o primeiro número informado for negativo, ele roda tranquilo.

O que preciso mudar para que rode perfeitamente?

Segue abaixo:

int [] vetorX = new int [10];
    int contNegativo = 0;
    int i;
    
    for (i = 0; i < vetorX.length;i++){
        System.out.print("Digite o "+(i +1)+"º número:");// lendo valores
        vetorX[i] = tec.nextInt();
    }
    
    for (i = 0; i < vetorX.length;i++){
        if (vetorX[i] < 0){                 // contando os numeros negativos para o length do vetor
            contNegativo++;
        }
    }
    
    int [] vetorR = new int [contNegativo];    // tamanho vetor negativos
    
    
    
    for (i = 0; i < vetorX.length;i++){
        if (vetorX[i] < 0 ){                // atribuindo ao R os valores negativos
            vetorR[i] = vetorX[i];  
        }    
    }
    
    for (i = 0; i < contNegativo;i++){      // printando os negativos
    System.out.println(vetorR[i]);
    }

2 Respostas

I

Rapaz, faça o seguinte: quando os valores são atribuidos ao vetorR o indice “i” é utilizado. O índice i varia de acordo com o vetor x, assim se o primeiro e o terceiro número forem negativos, e o segundo não, o terceiro é adicionado a posição vetorR[2] e não na posição vetorR[1].

Solução: crie um contador para ser o índice do vetorR. Veja a alteração que sugiro:

int[] vetorR = new int[ contNegativo ];
int j = 0;
for( i = 0; i < vetorX.length; i++ ) {
    if ( vetorX[ i ] < 0 )  {
        vetorR[ j ] = vetorX[ i ];
        j++;
    }
}

Qualquer dúvida ou se o código acima não resolver seu problema, pode falar que ajudo a buscar outra solução. Mas, creio que a solução acima resolve o problema. Valeu!

Jonathan_Miritz

Funcionou sim! Muito grato, caí de paraquedas em vetores… tava difícil me estabilizar…

Valeu!!!

Criado 19 de março de 2020
Ultima resposta 31 de mar. de 2020
Respostas 2
Participantes 2