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.
/** * @param args */publicstaticvoidmain(String[]args){// TODO Auto-generated method stubScannerentrada=newScanner(System.in);intvalor=0;intsoma=0;intmaior=0;intmenor=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);}
}
Rodrigo_Sasaki
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
C
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.
Rodrigo_Sasaki
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.
E o que acontece quando o usuário digitar um 0? Faça o teste de mesa.
U
ulysses
o Caikeke esta certo vc tem que usar o Integer.MAX_VALUE.
Faz assim que vai da certo:
publicstaticvoidmain(String[]args){Scannerentrada=newScanner(System.in);intvalor;intsoma=0;intmaior=0;intmenor=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 resultadosif(valor==0){break;}elseif(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);}
Rodrigo_Sasaki
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.
S
steinbach
Muito obrigado pessoal, pelo que o ulysses passou funcinou certinho. Desde já muito obrigado.