Comparar valores dentro de um único array/vetor

Galera,

Sou iniciante em JAVA, e uma das coisas que mais odeio em programação é VETOR/ARRAY.
Estou com um exercício da faculdade para fazer.

Segue o código:

[code]package FEUC;

import java.util.Scanner;

public class Exerc4 {

/* Escreva um programa que calcula o máximo, 
 * o mínimo, a soma e a média de um conjunto 
 * de valores inteiros. O número de valores a 
 * introduzir deve ser também pedido ao utilizador. */

public static void main(String[] args) {
	Scanner scan = new Scanner(System.in);
	int[] valores = new int[5]; // vetor de 5 posições
	int maximo = 0;
	int minimo = 0;
	int soma;
	double media;
	int i;
	
	for (i=0;i<5;i++) {
		System.out.println("Informe o valor do " + (i+1) + "º valor: " );
		valores[i] = scan.nextInt();		
	}

}

}[/code]

Minha dificuldade é fazer a comparação entre os valores de um único array.

Poderiam me dá o “caminho das pedras”?

Abs.

O que você quer comparar? por que? pra que? :slight_smile:

O usuário vai entrar com 5 valores, e estes serão guardados no vetor.
Destes 5 valores, quero saber o maior e o menor, fazer a soma e a média.

Segue abaixo o enunciado:

/* Escreva um programa que calcula o máximo,
* o mínimo, a soma e a média de um conjunto
* de valores inteiros. O número de valores a
* introduzir deve ser também pedido ao utilizador. */

Abs,

Sabe comparar valores? maior, maior ou igual… coisas assim?

Sim!

Faça mais um laço no seu sistema percorrendo o vetor e comparando os números, dentro do laço vc tbm pode fazer a soma dentro deste mesmo laço e qdo for mostrar o resultado calcula a média, simples assim!

Olhem como eu fiz:

[code] package FEUC;

import java.util.Scanner;

public class Exerc4 {

/* Escreva um programa que calcula o máximo, 
 * o mínimo, a soma e a média de um conjunto 
 * de valores inteiros. O número de valores a 
 * introduzir deve ser também pedido ao utilizador. */

public static void main(String[] args) {
	Scanner scan = new Scanner(System.in);
	int[] valores = new int[5]; // vetor de 5 posições
	int maior  = 0;
	int menor  = 0;
	int soma;
	double media;
	int i;
	
	for (i=0;i<5;i++) {
		System.out.println("Informe o valor do " + (i+1) + "º valor: " );
		valores[i] = scan.nextInt();		
	}
	
	if ((valores[1] > valores[2]) && (valores[1] > valores[3]) && (valores[1] > valores[4]) && (valores[1] > valores[5])) {
		maior = valores[1];
		System.out.println("O maior valor é " + valores[1]);
	}			
	if ((valores[2] > valores[1]) && (valores[2] > valores[3]) && (valores[2] > valores[4]) && (valores[2] > valores[5])) {
		maior = valores[2];
		System.out.println("O maior valor é " + valores[2]);
	}
	if ((valores[3] > valores[1]) && (valores[3] > valores[3]) && (valores[3] > valores[4]) && (valores[3] > valores[5])) {
		maior = valores[3];
		System.out.println("O maior valor é " + valores[3]);
	}
	if ((valores[4] > valores[1]) && (valores[4] > valores[2]) && (valores[4] > valores[3]) && (valores[4] > valores[5])) {
		maior = valores[4];
		System.out.println("O maior valor é " + valores[4]);
	}
	if ((valores[5] > valores[1]) && (valores[5] > valores[2]) && (valores[5] > valores[3]) && (valores[5] > valores[4])) {
		maior = valores[5];
		System.out.println("O maior valor é " + valores[5]);
	}
	
	if ((valores[1] < valores[2]) && (valores[1] < valores[3]) && (valores[1] < valores[4]) && (valores[1] < valores[5])) {
		menor = valores[1];
		System.out.println("O menor valor é " + valores[1]);
	}
	if ((valores[2] < valores[1]) && (valores[2] < valores[3]) && (valores[2] < valores[4]) && (valores[2] < valores[5])) {
		menor = valores[2];
		System.out.println("O menor valor é " + valores[2]);
	}
	if ((valores[3] < valores[1]) && (valores[3] < valores[3]) && (valores[3] < valores[4]) && (valores[3] < valores[5])) {
		menor = valores[3];
		System.out.println("O menor valor é " + valores[3]);
	}
	if ((valores[4] < valores[1]) && (valores[4] < valores[2]) && (valores[4] < valores[3]) && (valores[4] < valores[5])) {
		menor = valores[4];
		System.out.println("O menor valor é " + valores[4]);
	}
	if ((valores[5] < valores[1]) && (valores[5] < valores[2]) && (valores[5] < valores[3]) && (valores[5] < valores[4])) {
		menor = valores[5];
		System.out.println("O menor valor é " + valores[5]);
	}
	
	media = (valores[1] + valores[2] + valores[3] + valores[4] + valores[5]) / 5;
	soma = (valores[1] + valores[2] + valores[3] + valores[4] + valores[5]);
	
	System.out.println("A média dos valores é " + media + " e a soma dos valores é " + soma);
	
}

}
[/code]

Tem como melhorar?

Abs,

[quote=juliomendes90]Olhem como eu fiz:
Tem como melhorar?[/quote]

Com certeza tem:

    public static void main(String[] args) {  
        Scanner scan = new Scanner(System.in);  
        int[] valores = new int[5]; // vetor de 5 posições  
        int maior  = 0;  
        int menor  = 0;  
        int soma;  
        double media;  
          
        for (int i = 0; i < 5; i++) {  
            System.out.println("Informe o valor do " + (i + 1) + "º valor: " );  
            valores[i] = scan.nextInt();          
        }

        // Add os primeiros valores às variáveis
        menor = valores[0];
        maior = valores[0];

        for (int i = 0; i < valores.length(); i++) {
            soma += valores[i]; //soma os valores
            
            if (menor > valores[i]) menor = valores[i]; // Verifica e add o menor valor
            if (maior < valores[i]) maior = valores[i]; // Verifica e add o maior valor
        }

        // Calcula a média
        media = soma / valores.length;

        // print para mostrar os valores, soma e média...
    }

Uma obs, vc pode declarar o “int i” diretamente dentro do laço for, é uma variável a menos no scopo do método.

Por favor, não abuse do CAPS LOCK no título das suas mensagens.

[quote=fabiocortolan][quote=juliomendes90]Olhem como eu fiz:
Tem como melhorar?[/quote]

Com certeza tem:

    public static void main(String[] args) {  
        Scanner scan = new Scanner(System.in);  
        int[] valores = new int[5]; // vetor de 5 posições  
        int maior  = 0;  
        int menor  = 0;  
        int soma;  
        double media;  
          
        for (int i = 0; i < 5; i++) {  
            System.out.println("Informe o valor do " + (i + 1) + "º valor: " );  
            valores[i] = scan.nextInt();          
        }

        // Add os primeiros valores às variáveis
        menor = valores[0];
        maior = valores[0];

        for (int i = 0; i < valores.length(); i++) {
            soma += valores[i]; //soma os valores
            
            if (menor > valores[i]) menor = valores[i]; // Verifica e add o menor valor
            if (maior < valores[i]) maior = valores[i]; // Verifica e add o maior valor
        }

        // Calcula a média
        media = soma / valores.length;

        // print para mostrar os valores, soma e média...
    }

Uma obs, vc pode declarar o “int i” diretamente dentro do laço for, é uma variável a menos no scopo do método.[/quote]

Valeu amigo, obrigado.

Beleza, obrigado. Até então, não sabia dessa regra. Abs,