Eaí, é a primeira vez que entro aqui e gostaria de fazer uma pergunta…
Estou fazendo um exercício e meu resultado sempre dá 0, alguém pode me dizer o pq?
O código:
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner leitor = new Scanner(System.in);
int elemento = leitor.nextInt();
int vetor [] = new int[elemento];
criaVetor (vetor);
calcVet (vetor);
}
public static void criaVetor(int [] vetor) {
Scanner leitor = new Scanner(System.in);
for(int i = 0; i < vetor.length; i++) {
System.out.println("Numero " + i + ":");
vetor [i] = leitor.nextInt();
}
}
public static void calcVet(int [] vetor) {
int nMaior = vetor[0];
int nMenor = vetor[0];
for(int i = 0; i < vetor.length; i++) {
if(vetor[i] > nMenor)
{nMenor = vetor[i];}
if(vetor[i] < nMaior)
{nMaior = vetor[i];}
}
int diferenca = vetor[0];
diferenca = (nMaior - nMenor);
System.out.println("A difereça entre o maior elemento e o menor é de: " +diferenca);
}
}
int vetor [] = new int[elemento]; <-- cria o vetor
criaVetor (vetor); <-- adiciona valores ao vetor
calcVet (vetor); <-- calcula a diferenca
O vetor que você passa como parâmetro em calcVet está vazio, os valores que você adiciona à ele com criaVetor desaparecem assim que o método termina a execução. O certo seria fazer criaVetor retornar o vetor já com os valores setados e depois fazer isso:
int vetor [] = new int[elemento];
int vetorComValores[] = criaVetor(vetor);
calcVet(vetorComValores);
Não desaparecem, vetores são objetos. A variável “vetor” está guardando uma referência para o vetor e o método criaVetor modifica a mesma. Ou seja, a mudança é refletida mesmo ao fim do método.
public static void calcVet(int [] vetor) {
int nMaior = vetor[0];
int nMenor = vetor[0];
for(int i = 0; i < vetor.length; i++) {
if(vetor[i] < nMenor){
nMenor = vetor[i];
}
if (vetor[i] > nMaior){
nMaior = vetor[i];
}
}
System.out.println("A difereça entre o maior elemento e o menor é de: " + (nMaior - nMenor));
}