[RESOLVIDO] Problema com Estruturas de Repetição [While e If]

6 respostas
prfs91

O problema é o seguinte, ainda não encontrei o erro, é que quando eu digito o número negativo ao imprimir ele imprime o valor negativo. Mais não quero isso, quero o menor da se quência de números positivos ou nulo. Como eu faço, alguém pode me ajudar?

  1. Escreva um algoritmo que leia uma sequência de números inteiros positivos e determine o maior e o menor número. A entrada de um número negativo indica que a sequência terminou.

import java.util.Scanner; public class L03_Q05_MaiorMenor { public static void main(String[]args) { Scanner dados = new Scanner (System.in); int num, maior, menor; maior = 0; menor = 999999999; num=0; while (num>=0) { num=dados.nextInt(); if (num>maior) maior = num; else menor = num; } System.out.println("Maior: "+ maior); System.out.println("Menor: "+ menor); } }

6 Respostas

jeffev

Tente assim

else if (num<menor && num>=0) menor = num;

prfs91

jeffev:
Tente assim

else if (num&lt;menor && num&gt;=0) menor = num;

Obrigada, funcionou.

Mas tipo pq o negativo entra no while? Não era para não entrar?

Arthemus

Acredito que dessa forma deva resolver a questão do negativo, de uma olhada:

Scanner dados = new Scanner(System.in);
		int num, maior, menor;
		maior = 0;
		menor = 999999999;
		num = 0;
		while (num &gt;= 0) {
			num = dados.nextInt();
			if (num &lt; 0)
				break;
			else if (num &gt; maior && num &gt; menor)
				maior = num;
			else if (num &lt; menor)
				menor = num;

		}
		System.out.println(&quot;Maior: &quot; + maior);
		System.out.println(&quot;Menor: &quot; + menor);
prfs91
Arthemus:
Acredito que dessa forma deva resolver a questão do negativo, de uma olhada:
Scanner dados = new Scanner(System.in);
		int num, maior, menor;
		maior = 0;
		menor = 999999999;
		num = 0;
		while (num &gt;= 0) {
			num = dados.nextInt();
			if (num &lt; 0)
				break;
			else if (num &gt; maior && num &gt; menor)
				maior = num;
			else if (num &lt; menor)
				menor = num;

		}
		System.out.println(&quot;Maior: &quot; + maior);
		System.out.println(&quot;Menor: &quot; + menor);

Eu entendi agora, obrigada... Eu pensava que o negativo não entrava no while, fiquei confusa :P
Mais obrigada, ajudaram bastante. :D

jeffev

Se fosse um for não entraria, mas o while testa no fim se a condição é verdadeira.

prfs91

jeffev:
Se fosse um for não entraria, mas o while testa no fim se a condição é verdadeira.

Humm, entendi… Obrigada de novo. :smiley:

Criado 10 de novembro de 2012
Ultima resposta 10 de nov. de 2012
Respostas 6
Participantes 3