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… 
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 
[]'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…
[/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.
