Dúvida em código para ler menor maior e menor valor.
importjava.util.Scanner;/* Exercício * Crie uma aplicação console que deverá ler 4 valores numéricos * e apresentar o maior e o menor. */publicclassExercicio{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intvalor[]=newint[4];intmaior=0,menor=0;for(inti=0;i<valor.length;i++){System.out.print("Digite o "+(i+1)+"º valor: ");valor[i]=sc.nextInt();if(valor[i]>maior){maior=valor[i];}}for(intj=0;j<valor.length;j++){if(valor[j]<menor){menor=valor[j];}}System.out.println("Maior valor = "+maior);System.out.println("Menor valor = "+menor);}}
Como eu faço para inicializar uma variável que não seja com 0 (zero)? Do jeito que está ele só pega o maior valor se esse for maior que o anterior, que nesse caso é zero. E o menor valor só pega se for menor que zero.
Qual outra maneira de resolver esse problema?
dica, qual é o valor maximo que a variavel pode receber e qual é o valor minimo?
E
entanglement
Você pode usar um truque - inicializar a variável “maior” com o menor número inteiro possível, e “menor” com o maior número inteiro possível.
V
valdeir.bae1 like
Meu amigo, uma forma simples (mas deselegante) de você resolver isso é atribuindo o valor 999999999999 a variável menor;
menor=[telefoneremovido];
Mas acredito que o melhor a se fazer é ler a primeiro elemento do array fora e atribuir o valor maior e menor a ele:
Scannersc=newScanner(System.in);intvalor[]=newint[4];System.out.print("Digite o 1º valor: ");valor[0]=sc.nextInt();intmenor=valor[0];intmaior=valor[0];for(inti=1;i<valor.length;i++){System.out.print("Digite o "+(i+1)+"º valor: ");valor[i]=sc.nextInt();if(valor[i]>maior){maior=valor[i];}}for(intj=1;j<valor.length;j++){if(valor[j]<menor){menor=valor[j];}}
Mais ou menos isso, não sei se vai rodar, porque não testei amigo =)
F
fabiocortolan
Acredito q a melhor forma de resolver seu problema é verificar se é a primeira inserção de dados e em caso positivo inserir o valor nas duas variáveis, segue exemplo:
for(inti=0;i<valor.length;i++){System.out.print("Digite o "+(i+1)+"º valor: ");valor[i]=sc.nextInt();//Verificaseéoprimeironúmeroinseridoif(i=0){maior=valor[i];menor=valor[i];}if(valor[i]>maior){maior=valor[i];}}
M
Matheus_terra1 like
Para o maior elemento, basta inicializar a variavel maior com o primeiro elemento do vetor.
E pro menor elemento, você pode usar o Integer.MAX_VALUE; Ou seja, ele vai armazenar na variavel menor o maior valor que uma variável int por armazenar.
O código ficaria assim:
publicclassExercicio{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intvalor[]=newint[4];intmaior=valor[0],menor=Integer.MAX_VALUE;for(inti=0;i<valor.length;i++){System.out.print("Digite o "+(i+1)+"º valor: ");valor[i]=sc.nextInt();if(valor[i]>maior){maior=valor[i];}}for(intj=0;j<valor.length;j++){if(valor[j]<menor){menor=valor[j];}}System.out.println("Maior valor = "+maior);System.out.println("Menor valor = "+menor);}}
Quando sua dúvida for esclarecida encerre o post por favor :D
M
mi.rodrigues2 likes
Existe uma forma bem trivial de responder isso. Segue código abaixo:
importjava.util.Scanner;/* Exercício * Crie uma aplicação console que deverá ler 4 valores numéricos * e apresentar o maior e o menor. */publicclassExercicio{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in);inta=0,maior=0,menor=0;for(intx=0;x<4;x++){System.out.println("Insira um valor:");a=in.nextInt();if(x==0){maior=a;menor=a;}if(a>maior){maior=a;}if(a<menor){menor=a;}}System.out.print("Maior: "+maior+". Menor: "+menor);}}
V
ViniGodoy
Não precisa ressaltar que a dúvida é (básica) se você já abriu no fórum de Java Básico.
S
sergiotaborda
GilsnSilva:
Como eu faço para inicializar uma variável que não seja com 0 (zero)? Do jeito que está ele só pega o maior valor se esse for maior que o anterior, que nesse caso é zero. E o menor valor só pega se for menor que zero.
Qual outra maneira de resolver esse problema?
Vc poderia inicializar suas variáveis com Integer.MAX_VALUE ou Integer.MIN_VALUE, contudo essa solução seria ainda “ad doc”.
O correto é iniciar com o primeiro valor do array e iterar no laço apenas a partir do segundo elemento.
Isto garante a comparação correta.
publicclassExercicio{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intvalor[]=newint[4];// primeiro obtenha o input sem fazer mais nadafor(inti=0;i<valor.length;i++){System.out.print("Digite o "+(i+1)+"º valor: ");valor[i]=sc.nextInt();}// depois obtenha o maior e o menorintmaior=valor[0];for(inti=1;i<valor.length;i++){if(valor[i]>maior){maior=valor[i];}}intmenor=valor[0];for(inti=1;i<valor.length;i++){if(valor[i]<menor){menor=valor[j];}}System.out.println("Maior valor = "+maior);System.out.println("Menor valor = "+menor);}}
G
GilsnSilva
Obrigado à todos pelas dicas.
G
GilsnSilva
Obrigado à todos pelas dicas.
V
vergil_wrath
Pessoal aproveitando a pergunta do amigo ae, como faço pra armazenar em uma variavel o segundo menor e o segundo maior número??
K
kenew
importjava.util.Arrays;importjava.util.Scanner;/* Exercício * Crie uma aplicação console que deverá ler 4 valores numéricos * e apresentar o maior e o menor. */publicclassExercicio{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intvalor[]=newint[4];for(inti=0;i<valor.length;i++){System.out.print("Digite o "+(i+1)+"º valor: ");valor[i]=sc.nextInt();}Arrays.sort(valor);System.out.println("Maior valor = "+valor[1]);<------------segundalinhadovetorSystem.out.println("Menor valor = "+valor[valor.length-2]);<------------penultimalinhadovetorou3o.linha}}
R
Rafael_Barbosa
Ajuda! Maior e menor valor
Faça um programa console Java que receba as notas prova de 60 alunos. Considere que a digitação deverá ser de 0 até 35.
Como resultado intermediário, exiba o nome e o aproveitamento do aluno. Exemplo. O aluno que tirou 35 pontos na prova teve um aproveitamento de 100%
Pergunte ao usuário se deseja finalizar o programa (S – Sim / N – Não) Ao final exiba:
A média das notas
A quantidade de alunos que tiveram aproveitamento acima de 60%
Exibir a menor nota da turma.
Como faço?
publicstaticvoidmain(String[]args){// TODO Auto-generated method stubScannerleia=newScanner(System.in);//Declaracao de variaveisintnota,//receber nota via tecladocontador=0,//Contar alunos max 60soma=0,//Somar notas digitadascontadorAcima60=0;//Contar qtos alunos tiveram nota maior que 60%charresposta;//Informar se deseja encerrar ou naoStringnome;//Receber nome via tecladointaproveitamento,media;//Loop para executar 60 vezesdo{//Receber nomeSystem.out.print("Nome: ");leia.next();//Receber nota porem so de 0 a 35do{System.out.println("Digite sua nota: ");nota=leia.nextByte();if(nota<0||nota>35){System.out.println("Nota invalida. Digite novamente.");}}while(nota<0||nota>35);aproveitamento=(100*nota)/35;System.out.println("Aproveitamento: "+aproveitamento+"%");soma=soma+nota;contador++;}while(contador<60);media=soma/60;System.out.println("A média das notas foi: "+media);}
F
Fernandes_Bernardo_R
//É só colocar “menor = maior;” antes do segundo “for” e tá resolvido! Porque a variável “menor” vai sempre iniciar com o valor máximo. Já testei assim e funcionou.
publicclassExercicio{publicstaticvoidmain(String[]args){Scannersc=newScanner(<ahref="http://System.in">System.in</a>);intvalor[]=newint[4];intmaior=0,menor=0;for(inti=0;i<valor.length;i++){System.out.print("Digite o "+(i+1)+"º valor: ");valor[i]=sc.nextInt();if(valor[i]>maior){maior=valor[i];}}menor=maior;for(intj=0;j<valor.length;j++){if(valor[j]<menor){menor=valor[j];}}System.out.println("Maior valor = "+maior);System.out.println("Menor valor = "+menor);}}
W
will5
eu escrevi esse código para fazer o teste , porem eu criei as variáveis , menor e maior , no inicio do código e o código só verificou o maior numero, ai rodei o código igual ta aqui , e deu certo, alguém pode me explicar qual o motivo.
W
will5
eu escrevi esse código para fazer o teste , porem eu criei as variáveis , menor e maior , no inicio do código e o código só verificou o maior numero, ai rodei o código igual ta aqui , e deu certo, alguém pode me explicar qual o motivo.