Pequena duvida num exercicio

4 respostas
E

Exercicio:

Escreva um aplicativo que localiza o menor de vários inteiros. Assuma que o primeiro valor lido especifica o numero de valores a serem inseridos pelo usuario.

Minha duvida é na parte de assumir o primeiro valor como o numero de valores a serem inseridos, não consigo fazer o loop contar corretamente.
Tentei fazer assim, mas não dar certo:

import java.util.Scanner;

public class Menor
{
	public static void main(String args[])
	{
		int num,menor=0;
		
		Scanner input = new Scanner(System.in);
		
		System.out.printf("Insira o numero de valores a ser analisados: ");
		num=input.nextInt();
		System.out.printf("\n1o numero: %d\n",num);
		menor=num;
		for(int a=1; a<=menor; a++)
		{  
		    
		    System.out.printf("%do numero: ",a);
		    num=input.nextInt();
		     
		     while(num < menor)
			  menor=num;
		}
		System.out.printf("\nO menor inteiro eh: %d\n",menor);
		
		
	}
}

4 Respostas

A
Seu problema é que você está alterando o valor da variável que controla quantas vezes o loop será executado. O caso está acontecendo aqui:
while(num < menor)
 			  menor=num;
Declare uma variável separada pra controlar o loop. Com uma mexidinha no código pode ficar tipo assim:
import java.util.Scanner;

 public class Menor2
 {
 	public static void main(String args[])
 	{
 		int num,menor,indice;

 		Scanner input = new Scanner(System.in);

 		System.out.printf("Insira o numero de valores a ser analisados: ");
 		num=input.nextInt();
 		System.out.printf("\n1o numero: %d\n",num);
 		menor=num;
 		indice=num;
 		for(int a=2; a<=indice; a++)
 		{

 		    System.out.printf("%do numero: ",a);
 		    num=input.nextInt();

 		     if(num < menor)
 			  	menor=num;
 		}
 		System.out.printf("\nO menor inteiro eh: %d\n",menor);


 	}
 }
E

Deu certo , muito obrigado.

Quer dizer que duas variáveis podem assumir o valor de uma outra variável ao mesmo tempo, aqui no caso ‘menor=num’ e ‘indice=num’. Pensei que qdo ‘menor’ fosse igual a ‘num’, o ‘num’ passaria a ter um valor default.

A

Pois é. O valor de uma variável só se altera quando você manda isso acontecer.

Vamos supor:

int primeiraVariavel = 0;
int segundaVariavel;

primeiraVariavel = 5;
segundaVariavel = (primeiraVariavel+1);

O que acontece aqui… primeiraVariavel foi declarada e inicializada já com um valor; a saber, 0. segundaVariavel foi apenas declarada. Então mudamos o valor de primeiraVariavel para 5, e depois atribuímos à segundaVariavel a soma de primeiraVariavel + 1. Depois disso tudo, segundaVariavel vale 6 e primeiraVariavel continua valendo 5. Uma dica: quando as coisas não acontecerem do jeito que você espera, “printe” suas variáveis em determinados pontos de execução do seu código. É como armar ratoeiras e só ficar observando qual faz “PLÉC!!”

E

ok! Obrigado pelo esclarecimento e pelas dicas.
Até mais!!

Criado 29 de abril de 2006
Ultima resposta 3 de mai. de 2006
Respostas 4
Participantes 2