Ajuda ai

Boa noite, seguinte pessoal estou fazendo alguns exercícios em minha aula de algoritmos um dos programas passado foi esse:

Faça um programa que, dado um conjunto de N números, determine o menor valor, o
maior valor e a soma dos valores.

Usado while e do.
Ele passou que assim que digitamos 0 o programa encerra. blz no maior na soma tudo blz
mas quando é o menor que emperra se digito tudo positivo ele le o 0 como menor valor. tem como mudar isso ja quebrei a kbeca umas 2 horas aqui ja.

Posta seu código.

import java.util.Scanner;
public class Ex16 {

/**
 * @param args
 */
public static void main(String[] args) {
	// TODO Auto-generated method stub
	Scanner entrada = new Scanner(System.in);
	
	int valor = 0;
	int soma = 0;
	int maior = 0;
	int menor =0;
	
	do{
		System.out.print("Digite um número e [0] para sair: ");
		valor = entrada.nextInt();
		
		soma = soma +valor;
		
		if (valor>maior)
			maior=valor;
		if (valor<menor)
			menor=valor;
		
	}while(valor!=0);
	System.out.println("A soma dos números digitado: "+soma);
	System.out.println("O maior número digitado:     "+maior);
	System.out.println("O menor número digitado:     "+menor);
	
}

}

Uma maneira bem estúpida de se resolver isso (citando o entanglement, rs) seria colocar um if perguntando se é 0 antes dos seus ifs, algo assim:if(valor != 0){ if (valor>maior) maior=valor; if (valor<menor) menor=valor; }

Ah, sempre que for postar seu código coloque ele entre as tags [ code][/code], pra ficar bonitinho como o meu ali acima, hehehe :smiley:

Não funciona porque você inicia a variável menor com 0. Como qualquer número positivo é maior que 0 ele nunca vai entrar no if.

Inicia sua variável com um número bem alto, ou melhor, use Integer.MAX_VALUE.

[quote=Caikeke]Não funciona porque você inicia a variável menor com 0. Como qualquer número positivo é maior que 0 ele nunca vai entrar no if.

Inicia sua variável com um número bem alto, ou melhor, use Integer.MAX_VALUE.[/quote]
E o que acontece quando o usuário digitar um 0? Faça o teste de mesa.

o Caikeke esta certo vc tem que usar o Integer.MAX_VALUE.

Faz assim que vai da certo:

 public static void main(String[] args) {

    Scanner entrada = new Scanner(System.in);

    int valor;
    int soma = 0;
    int maior = 0;
    int menor = Integer.MAX_VALUE;

    do {
      System.out.print("Digite um número e [0] para sair: ");
      valor = entrada.nextInt();

      soma = soma + valor;

      if (valor > maior) {
        maior = valor;
      }
      
      // se o valor for = 0 ele encerra o laço e mostra os resultados
      if (valor == 0) {
        break;
        
      } else if (valor < menor) {
        menor = valor;
      }

    } while (valor != 0);
    System.out.println("A soma dos números digitado: " + soma);
    System.out.println("O maior número digitado: " + maior);
    System.out.println("O menor número digitado: " + menor);

  }

Pensando assim, ele deve usar Integer.MIN_VALUE para o maior também, se for pensar que o usuário pode digitar somente números negativos.

Muito obrigado pessoal, pelo que o ulysses passou funcinou certinho. Desde já muito obrigado.