Problema para mostrar o maior numero e menor utilizando o loop [Resolvido]
11 respostas
T
TCalderoni
Ola pessual ta complicado essas lógicas.
Elaborar um programa que efetue a leitura de valores positivos inteiros até que o valor negativo seja informado. Ao final devem ser apresentados o maior e o menor valores informados pelo usuário.
packageExercicios;importjava.text.DecimalFormat;importjavax.swing.*;publicclassmenor_maior{publicstaticvoidmain(String[]args){intnum=0,cont=0,men_valor=0,mai_valor=0;while(true){num=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite um numero","Numero",JOptionPane.QUESTION_MESSAGE));if(num>=0){cont++;}else{break;}}System.out.println("A quantidade de numeros digitados é "+cont);}}
Ate consegui contar os numeros mas como vou saber qual foi o menor e qual foi o maior, pessual se tiver algum livro ou curso de lógica também eu agradeço pois estou apanhando dessas lógicas e sei que não são das mais dificeis, abraços.
Crie uma variável para armazenar o maior valor e uma para armazenar o menor valor.
Faça um “if” verificando se o valor digitado é maior que o valor armazenado nessa variável, caso for, substitua o valor dela pelo novo número.
Faça o mesmo para o número menor.
Espero que eu tenha sido compreensível… se não fui me fala que eu tento explicar de outra forma
T
TCalderoni
hum legal vou tentar, entendi a ideia, interesante o raciocinio.
Brigadãooooooooooo!!!
T
TCalderoni
Então consegui fazer a condicional mas agora ele parou de fazer loop, vou colocar o que fiz.
packageExercicios;importjava.text.DecimalFormat;importjavax.swing.*;publicclassmenor_maior{publicstaticvoidmain(String[]args){intnum=0,cont=0,men_valor=0,mai_valor=0;while(true){num=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite um numero","Numero",JOptionPane.QUESTION_MESSAGE));if(num>=0){cont++;}if(num>mai_valor){mai_valor=num;}if(num<men_valor){men_valor=num;}}System.out.println("A quantidade de numeros digitados é: "+cont);System.out.println("O maior valor digitado foi: "+mai_valor);System.out.println("O menor valor digitado foi: "+men_valor);}}
C
carlaum
o comando break faz vc sair do looping!
T
TCalderoni
Agora ele ta faznedo looping mas imprimindo tudo e so quero que imprima no final, mas fechei o while antes de imprimir e ta dando erro.
packageExercicios;importjava.text.DecimalFormat;importjavax.swing.*;publicclassmenor_maior{publicstaticvoidmain(String[]args){intnum=0,cont=0,men_valor=0,mai_valor=0;while(true){num=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite um numero","Numero",JOptionPane.QUESTION_MESSAGE));if(num>=0){cont++;}if(num>mai_valor){mai_valor=num;}if(num<men_valor){men_valor=num;}}System.out.println("A quantidade de numeros digitados é: "+cont);System.out.println("O maior valor digitado foi: "+mai_valor);System.out.println("O menor valor digitado foi: "+men_valor);}}
tathy.vip
Você pode colocar os if’s verificando se o número é maior ou menor dentro do primeiro if (o que verifica se o número é maior que zero).
Acredito que ficaria mais ou menos assim:
importjavax.swing.JOptionPane;publicclassteste{publicstaticvoidmain(String[]args){intnum=0,cont=0,men_valor=0,mai_valor=0;while(true){num=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite um numero","Numero",JOptionPane.QUESTION_MESSAGE));if(num>=0){cont++;if(num>mai_valor){mai_valor=num;}if(num<men_valor){men_valor=num;}}else{break;}}System.out.println("A quantidade de numeros digitados é "+cont);System.out.println("O maior valor digitado foi: "+mai_valor);System.out.println("O menor valor digitado foi: "+men_valor);}}
Se não der certo mesmo assim, posta aqui o erro.
C
carlaum1 like
O seu men_valor ja esta recebendo 0 no inicio do programa por isso o menor numero sempre sera 0, mesmo q vc nao digite o 0.
Faz o seguinte:
publicclassmenor_maior{publicstaticvoidmain(String[]args){intnum=0,cont=0,men_valor,mai_valor;num=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite um numero","Numero",JOptionPane.QUESTION_MESSAGE));men_valor=num;mai_valor=num;while(true){if(num>=0){cont++;if(num>mai_valor){mai_valor=num;}if(num<men_valor){men_valor=num;}}else{break;}num=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite um numero","Numero",JOptionPane.QUESTION_MESSAGE));}System.out.println("A quantidade de numeros digitados é "+cont);System.out.println("O maior valor digitado foi: "+mai_valor);System.out.println("O menor valor digitado foi: "+men_valor);}}
marcosvidolin
olá meu uma dica…
tente evitar ao maximo o break.
Voce pode usar o
do{
//suaoperacao
}
while(condição);
[]'s
T
TCalderoni
carlaum:
O seu men_valor ja esta recebendo 0 no inicio do programa por isso o menor numero sempre sera 0, mesmo q vc nao digite o 0.
Faz o seguinte:
publicclassmenor_maior{publicstaticvoidmain(String[]args){intnum=0,cont=0,men_valor,mai_valor;num=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite um numero","Numero",JOptionPane.QUESTION_MESSAGE));men_valor=num;mai_valor=num;while(true){if(num>=0){cont++;if(num>mai_valor){mai_valor=num;}if(num<men_valor){men_valor=num;}}else{break;}num=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite um numero","Numero",JOptionPane.QUESTION_MESSAGE));}System.out.println("A quantidade de numeros digitados é "+cont);System.out.println("O maior valor digitado foi: "+mai_valor);System.out.println("O menor valor digitado foi: "+men_valor);}}
Entao fiz do jeito que vc disse inicializand as variaveis com num, mas as duas acabavam com o mesmo numero ai fiz o seguinte:
packageExercicios;importjava.text.DecimalFormat;importjavax.swing.*;publicclassmenor_maior{publicstaticvoidmain(String[]args){intnum=0,cont=0,men_valor,mai_valor;mai_valor=num;while(true){num=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite um numero","Numero",JOptionPane.QUESTION_MESSAGE));men_valor=num;if(num>=0){cont++;if(num>mai_valor){mai_valor=num;}if(num<men_valor){men_valor=num;}}else{break;}}System.out.println("A quantidade de numeros digitados é "+cont);System.out.println("O maior valor digitado foi: "+mai_valor);System.out.println("O menor valor digitado foi: "+men_valor);}}
Valew mesmo em, Brigadão
C
carlaum
marcosvidolin:
olá meu uma dica…
tente evitar ao maximo o break.
Voce pode usar o
do{
//suaoperacao
}
while(condição);
[]'s
Blz!
Aqui esta a solução utilizando o do while:
publicstaticvoidmain(String[]args){intnum=0,cont=0,men_valor,mai_valor;num=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite um numero","Numero",JOptionPane.QUESTION_MESSAGE));men_valor=num;mai_valor=num;do{if(num>=0){if(num>mai_valor){mai_valor=num;}if(num<men_valor){men_valor=num;}cont++;}num=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite um numero","Numero",JOptionPane.QUESTION_MESSAGE));}while(num>=0);System.out.println("A quantidade de numeros digitados é "+cont);System.out.println("O maior valor digitado foi: "+mai_valor);System.out.println("O menor valor digitado foi: "+men_valor);}
tathy.vip
Então, acredito que você tenha que deixar os dois valores = num, como a carlaum sugeriu.
Pois se você analisar a lógica, tem que mostrar o menor e o maior valor que você digitou… certo?
Se a pessoa digitar apenas um valor, o menor número e o maior número serão os mesmos, até porque não há termos de comparação.