Exibir maior e menor

Boa tarde a todos…
bom, fiz um programa que exibe o maior e o menor em um vetor de 5 posicoes, e funcionou, porem tive que inicar a variavel menor com um valor igual a 10000, se eu colocasse por exemplo igual a 10, e inserisse um valor maior, o retorno seria sempre 10 como menor valor.
gostaria de saber como posso melhorar esse programa sem a necessidade de me prender a um valor nas variaveis.
obrigado

import java.util.Scanner;

public class maior {

	public static void main(String[] args) {
		int num[] = new int[5];// declarando um vetor de 5 posicoes
		int i;
		int maior1 = 0;
		int menor = 10000;

		Scanner input = new Scanner(System.in);
		// varrer o vetor
		for (i = 0; i < 5; i++) {

			System.out.println("Digite um numero");
			num[i] = input.nextInt();
			// Grava o Maior Valor de num[i] em maior1
			if (num[i] > maior1) {
				maior1 = num[i];

			}

			// Grava o Menor Valor de num[i] em menor
			if (num[i] < menor) {
				menor = num[i];

			}

		}
		System.out.println("o maior e:  " + maior1);
		System.out.print("o menor e:  " + menor);

	}

}

Tente, ao invés de iniciar o valor dessas variáveis hard-coded, inicie ambas com os primeiros valores entrados pelo usuário, então você entra no loop por 4x, entendeu?

[]'s

poderia explicar melhor o q vc quer fazer ?

vlw

Quando se conhece só o primeiro número, ele é o menor e também o maior da então lista de um número só.

Em outras palavras, faça com que o maior e o menor o primeiro número que o usuário entrou.

Para os outros você prossegue comparando e descobrindo o maior e o menor.

coloquei

                       maior1 = num[i];
	               menor = num[i];

dentro do for,mas nao funcionou, ele retorna 0 (zero).
o que eu quero é NAO ter que estipular um valor para a variavel, pois corro o risco do usuario colocar um valor que dê erro ao programa… :frowning:

o que os nossos amigos ai de cima explicaram foi o seguinte

voce não vai setar valores assim

int menor = 0;
int maior = 10000;

voce vai fazer o menor e maior receber um valor que o usuario vai preencher… e ja vai valer pro menor e pro maior

Amigo, inicie suas variaveis com 0

int maior = 0; int menor = 0;
e coloque essa este codigo no seu programa:

System.out.println("Digite um numero"); num[i] = input.nextInt(); // Grava o Maior Valor de num[i] em maior1 if (i==0) { maior = num[i]; menor = num[i]; }

isto resolverá o seu problema.
Abraços

Imagina isto, eu falo pra você que tenho uma lista e quero que você me diga qual é o maior e o menor. Daí você me pergunta quais são os dados da lista. Eu te falo que atualmente você tem o valor abaixo somente:

10 é o único elemento da lista, então, ele será o maior e também o menor elemento dessa lista.
Agora eu te digo que a lista tem mais elementos:

Agora o maior é 15 e o menor é 10. Se eu adicionar um novo:

O 10 era, quando tínhamos um elemento só, o maior e também o menor… Depois com outros elementos fomos comparando e tivemos outros números que tiraram esses títulos do 10 :slight_smile:

[]'s

[quote=Tonny Stark]coloquei

                       maior1 = num[i];
	               menor = num[i];

dentro do for,mas nao funcionou, ele retorna 0 (zero).
o que eu quero é NAO ter que estipular um valor para a variavel, pois corro o risco do usuario colocar um valor que dê erro ao programa… :frowning: [/quote]

Isso é porque voce nao tinha populado seu array (preenchido), e quando voce cria um array de inteiros, ele preenche automaticamente com 0.

O que nos dissemos é o seguinte:

Exiba a mensagem para o usuario entrar com um valor
Atribua esse valor em maior e menor

Repita x vezes:{
Exiba a mensagem para o usuario entrar com um valor
Atribua esse valor uma variavel a

Se a > maior{então maior recebe a}
senão{ se a < menor{então menor recebe a}}

}

uma dica que eu dou é pra você usar varargs… Isso pode ajudar, caso amanhã não sejam mais 5 e sim 20 números a serem comparados… Enfim…

Eu implementei o problema em um método que retorna um Integer[] e recebe um Integer…values

Abs []

Senhores, muito obrigado pelas dicas. Pelo jeito ainda tenho que praticar muita programação.
Obrigado pela atenção.
segue o codigo funcionando.

package Exercicio2b;
import java.util.Scanner;

public class maior {

	public static void main(String[] args) {
		int num[] = new int[5];// declarando um vetor de 5 posicoes
		int i;
		int maior1=0;//importante iniciar as variaveis locais
		int menor = 0;

		Scanner input = new Scanner(System.in);
		// usando o FOR para varrer o vetor
		for (i = 0; i < 5; i++) {

			System.out.println("Digite um numero");
			num[i] = input.nextInt();//entrada dos valores pelo usuario
		
						
			/*atribuindo o valor inicial das variaveis aos primeiros valores digitados
			porem é importante iniciar o valores das variaveis ja na delcaracao
			*/
				if (i==0) {  
				     maior1 = num[i];  
				     menor = num[i];  
				 }
			// Grava o Maior Valor de num[i] em maior1
			if (num[i] > maior1) {
				maior1 = num[i];

			}
			// Grava o Menor Valor de num[i] em menor
			if (num[i] < menor) {
				menor = num[i];

			}
	}		
		
		System.out.println("************************");
		System.out.println("o maior e ->  " + maior1);
		System.out.println("o menor e ->  " + menor);
		System.out.println("************************");
		

	}

}

Agora vou fazer um que calcula a media do aluno e exibe a situação dele.
:smiley: