Programação Java: Usando o laço while para descobrir o maior número de uma lista

Linguagem Java , Programação Java, Java Curso gratis. Nesse tutorial de nossa apostila de Java, vamos resolver uma questão proposta em nossa lista de exercícios sobre o laço while:  http://java.jar.io/questoes-usando-o-laco-while-java.html

Essa questão gerou dúvidas, em mais de um de nossos leitores, então vamos resolver e comentar ela, passo-a-passo.

Como achar o maior número em uma lista

5. Achando o maior número
Achar o maior, menor, média e organizar números ou sequências são os algoritmos mais importantes e estudados em Computação. Em Java não poderia ser diferente.
Em nosso curso, obviamente, também não será diferente.

Escreva um programa em Java que solicita 10 números ao usuário, através de um laço while, e ao final
Resolução comentada do exercício
A ideia principal desse tipo de algoritmo é a seguinte: a cada vez que o usuário fornecer um número, comparamos este com o valor que está armazenado na variável ‘maior’.
Ou seja, vamos usar um teste condicional if dentro de um laço while .
Então vamos lá.
Uma solução pra isso é o que vamos fazer no seguinte código, ou seja, o primeiro número digitado pelo usuário ficará armazenado na variável ‘maior’. Ora, se aquele é o primeiro valor fornecido, é também o maior que já foi fornecido, concorda?
Dentro do laço while, a primeira coisa que fazemos é pedir o número ao usuário, que ficará armazenado na variável ‘num’.
Se for maior, fazemos ‘maior = num’, para que essa variável agora armazene o novo número, que é maior.
Ao fim do laço, exibimos o valor da variável ‘maior’, que deverá ter o maior número fornecido.

mostre qual destes números é o maior.

Vamos usar uma variável chamada ‘maior’, que vai sempre armazenar o maior número fornecido pelo usuário.
Vamos usar outra, chamada ‘num’, que será usada para receber todos os 10 números pelo usuário.

Se o novo número fornecido por ele for maior que ‘maior’, fazemos com a variável ‘maior’ mude de valor, agora será esse novo número que ele digitou.


Como vamos usar o laço WHILE, vamos usar um pequeno truque.
Lembre-se que vamos comparar os números fornecidos pelo usuário com o valor que está na variável ‘maior’. Mas e o primeiro número digitado por ele? Vamos comparar com que valor, já que a variável ‘maior’ nem foi usada ainda?


Agora vamos entrar no laço while, que deverá contar 9 números, pois um número já foi fornecido.
Por isso, inicializamos nosso contador com o valor ‘count=2’, para que ele possa contar do número 2 até o 10, dentro do laço while.

Após feito isso, vamos comparar o número ‘num’ com o número ‘maior’, pra saber se este novo número fornecido é maior que o ‘maior’.

Caso não seja, nada ocorre.
Em qualquer caso, não esqueçamos de incrementar a variável ‘count’.

Veja como ficou nosso código java

  <pre class="java" style="background-color: #f4f4ff; border: 1px solid rgb(153, 153, 153); color: #0f0f0f; font-size: 15px; line-height: 20px; padding: 6px;"><span style="color: black; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Scanner</span><span style="color: #339933;">;</span><br /><span style="color: black; font-weight: bold;">public</span> <span style="color: black; font-weight: bold;">class</span> maiorNumeroWhile<span style="color: #009900;">{</span><br /> <br /><span style="color: black; font-weight: bold;">public</span> <span style="color: black; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">(</span><span style="color: #003399;">String</span><span style="color: #009900;">[</span><span style="color: #009900;">]</span> args<span style="color: #009900;">)</span><span style="color: #009900;">{</span><br /><span style="color: #000066; font-weight: bold;">float</span> maior,<br />           num<span style="color: #339933;">;</span><br /><span style="color: #000066; font-weight: bold;">int</span> count<span style="color: #339933;">=</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span><br />     Scanner entrada <span style="color: #339933;">=</span> <span style="color: black; font-weight: bold;">new</span> Scanner<span style="color: #009900;">(</span><span style="color: #003399;">System</span>.<span style="color: #006633;">in</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br /> <br /><span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">print</span><span style="color: #009900;">(</span><span style="color: blue;">"Numero 1: "</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />     num <span style="color: #339933;">=</span> entrada.<span style="color: #006633;">nextFloat</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />     maior <span style="color: #339933;">=</span> num<span style="color: #339933;">;</span><br /> <br /><span style="color: black; font-weight: bold;">while</span><span style="color: #009900;">(</span>count <span style="color: #339933;"> <span style="color: #cc66cc;">10</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span><br /><span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">print</span><span style="color: #009900;">(</span><span style="color: blue;">"Numero "</span> <span style="color: #339933;">+</span> count <span style="color: #339933;">+</span> <span style="color: blue;">": "</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />      num <span style="color: #339933;">=</span> entrada.<span style="color: #006633;">nextFloat</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br /> <br /><span style="color: black; font-weight: bold;">if</span><span style="color: #009900;">(</span>num <span style="color: #339933;">&gt;</span> maior<span style="color: #009900;">)</span><span style="color: #009900;">{</span><br />       maior <span style="color: #339933;">=</span> num<span style="color: #339933;">;</span><br /><span style="color: #009900;">}</span><br /> <br />      count<span style="color: #339933;">++;</span><br /><span style="color: #009900;">}</span><br /> <br /><span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">(</span><span style="color: blue;">"O maior numero digitado é: "</span><span style="color: #339933;">+</span>maior<span style="color: #009900;">)</span><span style="color: #339933;">;</span><br /> <br /><span style="color: #009900;">}</span><br /><span style="color: #009900;">}</span></span></pre>

  <p>
    <span style="font-family: Tahoma, Geneva, Kalimati, sans-serif;"><span style="line-height: 18.99305534362793px;">Mas como havíamos dito, fizemos uma espécie de &#8216;truque&rsquo;, fazendo com o primeiro número ficasse armazenado na variável &#8216;maior&rsquo;.</span></span><br /><span style="font-family: Tahoma, Geneva, Kalimati, sans-serif;"><span style="line-height: 18.99305534362793px;"><br /></span></span><span style="font-family: Tahoma, Geneva, Kalimati, sans-serif;"><span style="line-height: 18.99305534362793px;">Mas em programação, não existe apenas uma ideia, apenas uma maneira de fazer as coisas.</span></span><br /><span style="font-family: Tahoma, Geneva, Kalimati, sans-serif;"><span style="line-height: 18.99305534362793px;">Programar é usar a criatividade, criar soluções diferentes.</span></span><br /><span style="font-family: Tahoma, Geneva, Kalimati, sans-serif;"><span style="line-height: 18.99305534362793px;"><br /></span></span><span style="font-family: Tahoma, Geneva, Kalimati, sans-serif;"><span style="line-height: 18.99305534362793px;">Poderíamos fazer isso de outra maneira, apenas usando o laço while.</span></span><br /><span style="font-family: Tahoma, Geneva, Kalimati, sans-serif;"><span style="line-height: 18.99305534362793px;">Porém, não podemos comparar o primeiro número com a variável &#8216;maior&rsquo;, pois esta ainda está vazia.</span></span><br /><span style="font-family: Tahoma, Geneva, Kalimati, sans-serif;"><span style="line-height: 18.99305534362793px;"><br /></span></span><span style="font-family: Tahoma, Geneva, Kalimati, sans-serif;"><span style="line-height: 18.99305534362793px;">Então, uma possível solução é fazer o seguinte: colocar outro laço condicional dentro do laço while.</span></span><br /><span style="font-family: Tahoma, Geneva, Kalimati, sans-serif;"><span style="line-height: 18.99305534362793px;">Nesse novo IF, testamos se o número que o usuário vai fornecer é o primeiro (count=1), se for, o valor fornecido vai direto para a variável &#8216;maior&rsquo;, em vez de ir para a &#8216;num&rsquo;;</span></span><br /><span style="font-family: Tahoma, Geneva, Kalimati, sans-serif;"><span style="line-height: 18.99305534362793px;">Assim, nossa contador &#8216;count&rsquo; começa do número 1, e não mais do 2.</span></span><br /><span style="font-family: Tahoma, Geneva, Kalimati, sans-serif;"><span style="line-height: 18.99305534362793px;"><br /></span></span><span style="font-family: Tahoma, Geneva, Kalimati, sans-serif;"><span style="line-height: 18.99305534362793px;">Caso não seja o primeiro número, caímos no ELSE do teste condicional, que nada mais é o que aconteceria, no WHILE antigo, apresentado no código anterior.</span></span><br /><span style="font-family: Tahoma, Geneva, Kalimati, sans-serif;"><span style="line-height: 18.99305534362793px;">Porém, agora temos que inicializar o valor de &#8216;maior&rsquo;.</span></span><br /><span style="font-family: Tahoma, Geneva, Kalimati, sans-serif;"><span style="line-height: 18.99305534362793px;"><br /></span></span><span style="font-family: Tahoma, Geneva, Kalimati, sans-serif;"><span style="line-height: 18.99305534362793px;">Ou seja, o que fizemos aqui foi é colocar o primeiro número digitado dentro da variável &#8216;maior&rsquo;, e caso não seja o primeiro, vai pra variável &#8216;num&rsquo; e depois vai ser testado para checar se este &#8216;num&rsquo; é o maior ou não.</span></span><br /><span style="font-family: Tahoma, Geneva, Kalimati, sans-serif;"><span style="line-height: 18.99305534362793px;">Veja como ficaria nosso laço while:</span></span>
  </p>

  <pre class="java" style="background-color: #f4f4ff; border: 1px solid rgb(153, 153, 153); color: #0f0f0f; font-size: 15px; line-height: 20px; padding: 6px;"><span style="color: black; font-weight: bold;">while</span><span style="color: #009900;">(</span>count <span style="color: #339933;"> <span style="color: #cc66cc;">10</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span><br /> <br /><span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">print</span><span style="color: #009900;">(</span><span style="color: blue;">"Numero "</span> <span style="color: #339933;">+</span> count <span style="color: #339933;">+</span> <span style="color: blue;">": "</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br /> <br /><span style="color: black; font-weight: bold;">if</span><span style="color: #009900;">(</span>count <span style="color: #339933;">==</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span><br />  maior <span style="color: #339933;">=</span> entrada.<span style="color: #006633;">nextFloat</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br /><span style="color: #009900;">}</span><span style="color: black; font-weight: bold;">else</span><span style="color: #009900;">{</span><br />  num <span style="color: #339933;">=</span> entrada.<span style="color: #006633;">nextFloat</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br /> <br /><span style="color: black; font-weight: bold;">if</span><span style="color: #009900;">(</span>num <span style="color: #339933;">&gt;</span> maior<span style="color: #009900;">)</span><span style="color: #009900;">{</span><br />   maior <span style="color: #339933;">=</span> num<span style="color: #339933;">;</span><br /><span style="color: #009900;">}</span><br /><span style="color: #009900;">}</span><br /> <br /> count<span style="color: #339933;">++;</span><br /><span style="color: #009900;">}</span></span></pre>
</div>

Tags: java, linguagem java