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.
[code]package Exercicios;
import java.text.DecimalFormat;
import javax.swing.*;
public class menor_maior
{
public static void main(String[] args)
{
int num=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);
}
}
[/code]
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
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:
import javax.swing.JOptionPane;
public class teste {
public static void main(String[] args) {
int num = 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);
}
}
[quote=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:
public class menor_maior
{
public static void main(String[] args)
{
int num = 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);
}
}
[/code][/quote]
Entao fiz do jeito que vc disse inicializand as variaveis com num, mas as duas acabavam com o mesmo numero ai fiz o seguinte:
[code]package Exercicios;
import java.text.DecimalFormat;
import javax.swing.*;
public class menor_maior
{
public static void main(String[] args)
{
int num=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);
}
}
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.