Achar o menor número digitado

8 respostas
K

Bom pessoal queria uma dica/ajuda nesse meu código

import acm.program.*;

public class compararMenor extends ConsoleProgram {
	public void run() {
		String confirma = "";
		int numero, comparador = 0, extra;
		
		do{
			numero = readInt("Qual o seu número? ");
			extra = numero;
			for(int i=0;i<extra;i++){
				comparador++;
			}
			if(numero<=comparador){
				comparador=numero;
			}
				
			confirma = readLine("Deseja refazer a ação? ");			
		}while(confirma.equals("Sim"));
		
		println("O menor número digitado foi: " + comparador);
	}
}

O objetivo seria o usuário digitar N números e o programar mostrar o menor número digitado.
EXEMPLO:
5 8 -35 4 0
Menor numero é -35

8 Respostas

kmunga

Eu faria diferente, colocaria os numeros digitados em um Array de inteiros e depois faria os testes. No exemplo não citei a parte em que o usuario informa os numeros, esta como se já estivesse feito.

menorNumero=numeros[0];
   for(int i=1;o&lt;numeros.size()-1;i++){
      if (numeros[i]&lt;menorNumero){
          menorNumero=numeros[i];
      }
   }
//segue o codigo para mostrar os numeros e o menor

>>

EduFrazao
int menor = numeros.get(0);

for(int numero : numeros) {

menor = Math.min(menor, numero);

}
M

Seguindo o seu raciocínio, basta retirar este bloco de código:

extra = numero;  
for(int i=0;i<extra;i++){  
     comparador++;  
}

E utilizar um numero alto para o comparador:
int comparador = 9999999;

Claro que existe método bem melhor para se fazer isto. Respondi apenas em cima do seu raciocínio.

Att.

weslly99

Eu faria assim

import java.util.Scanner;

public class CompararMenor {// nome de Classe começado com letra maiuscula CamelCase
	public static void main(String[] args) {
		String iterar;
		int menor;
		int aux;
		Scanner input = new Scanner(System.in);
		//para compara qual o menor ele precisa ter pelomenos 2 numeros
			System.out.println("Digite um valor");
			menor = input.nextInt();

			do{
				System.out.println("Digite um valor");
				aux = input.nextInt();
				
				if(aux<menor)
					menor=aux;	
				
				System.out.println("Deseja inserir outro numero?\nsim ou não");
				iterar = input.next();
			}while(iterar.equals("sim"));
		
			System.out.printf("Menor valor é %d",menor);
	}
}//fim da classe
Ziru

Ou pode fazer sem sacrifício algum.

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;


public class Aplicacao {

	public static void main(String[] args) {

		int valor;  
		String s = "s";
		ArrayList<Integer> buff = new ArrayList<Integer>();//Ciramos um ArrayList para armazenar quantos valores forem preciso.
		
        Scanner input = new Scanner(System.in);  
        
        do{
        System.out.println("Digite um valor:");  
        valor = input.nextInt();
        
        buff.add(valor); // Adicionamos o valor lido dentor do array.
        
        System.out.println("Deseja digitar um novo valor? S/N");
        s = input.next();
        }while(s.equalsIgnoreCase("s"));
        
        System.out.println("O menor valor digitado é: " + Collections.min(buff));// E com o Collections.min recuperamos o menor valor dentro desse array.

        
	}

}
weslly99

Aconselho você apenas entender as logicas postadas e desenvolver sua própria solução para seu problema. :slight_smile:

K

To começando java agora, ai eu procuro faze um solução em pseudocodigo e transformar pro java, mais valew ai galera.

weslly99
pra que serve esse seu %d ?

System.out.printf("Menor valor é %d",menor);
weslly99

[quote=kixtz]To começando java agora, ai eu procuro faze um solução em pseudocodigo e transformar pro java, mais valew ai galera.

weslly99
pra que serve esse seu %d ?

System.out.printf("Menor valor é %d",menor);

printf imprime na tela a mensagem formatada então o %d e um marcador de lugar que significa Inteiro Decimal. No caso menor e um int que e um valor inteiro decimal.
Tbm existe
%f para pontos flutuantes (double, float)
%s String
%c char
tem vários outros da uma olhadinha aqui http://docs.oracle.com/javase/6/docs/api/java/util/Formatter.html#syntax na parte de convenção ele diz cada um

Criado 23 de maio de 2013
Ultima resposta 25 de mai. de 2013
Respostas 8
Participantes 6