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
importjava.util.Scanner;publicclassmaior{publicstaticvoidmain(String[]args){intnum[]=newint[5];// declarando um vetor de 5 posicoesinti;intmaior1=0;intmenor=10000;Scannerinput=newScanner(System.in);// varrer o vetorfor(i=0;i<5;i++){System.out.println("Digite um numero");num[i]=input.nextInt();// Grava o Maior Valor de num[i] em maior1if(num[i]>maior1){maior1=num[i];}// Grava o Menor Valor de num[i] em menorif(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
T
t3sting
poderia explicar melhor o q vc quer fazer ?
vlw
Jesuino_Master
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.
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…
dudu_sps
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
vitorbertazoli
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
Jesuino_Master
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
drigo.angelo
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…
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}}
}
adriano_si
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 []
Tonny_Stark
Senhores, muito obrigado pelas dicas. Pelo jeito ainda tenho que praticar muita programação.
Obrigado pela atenção.
segue o codigo funcionando.
packageExercicio2b;importjava.util.Scanner;publicclassmaior{publicstaticvoidmain(String[]args){intnum[]=newint[5];// declarando um vetor de 5 posicoesinti;intmaior1=0;//importante iniciar as variaveis locaisintmenor=0;Scannerinput=newScanner(System.in);// usando o FOR para varrer o vetorfor(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 maior1if(num[i]>maior1){maior1=num[i];}// Grava o Menor Valor de num[i] em menorif(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.