4
respostas

erro no código - resolução do exercício 4 da aula 2 do curso de JAVA I

Bom dia, eu estou com uma dúvida e gostaria que alguém me ajudasse.

O exercício pede para que se imprima a soma de todos os números de 1 a 1000.

Para resolver este exercício eu fiz esse código:

class ImprimeSoma {
    public static void main(String[] args) {

     int soma=0;
     int i = 1;


         while (i<=1000){
         soma = soma + 1;
         i++;    

         }

    System.out.println(soma);    

    }
}

Mas o resultado dá 1000!

Alguém pode me ajudar?

Outra dúvida: eu copiei o código que o site propôs, colei no meu Sublime e o salvei como "gabarito.java". Quando eu vou no cmder e digito "javac gabarito.java", ele não dá mensagem nenhuma (como geralmente ocorre), mas quando eu dou um "dir" o arquivo "gabarito.class" não aparece.

Alguém já teve um problema parecido?

Obrigado pela ajuda

4 respostas

Fala Antonio,

O erro está na parte da soma, veja:

errado: soma = soma + 1
 certo: soma = soma + i

O valor a ser somado deve ser o da variável i, que é o valor incrementado.

lembrando que soma começa em 0 e i em 1, veja a diferença:

# ele soma de um em um pois o valor a ser somado é sempre o mesmo

soma = soma + 1 = 1 // soma vale 0 + 1
soma = soma + 1 = 2 // soma vale 1 + 1
soma = soma + 1 = 3 // soma vale 2 + 1

# acumula os valores pois o valor a ser somado é dinâmico, muda de acordo (incrementado) com a repetição do laço while

soma = soma + i = 1 // soma vale 0 e i vale 1
soma = soma + i = 3 // soma vale 1 e i vale 2
soma = soma + i = 6 // soma vale 3 e i vale 3

class ExercicioQuarto {

public static void main(String[] args){

int soma = 0;

for (int i = 1; i <= 1000; i++){ soma = soma + 1; } System.out.println("O valor da soma e = " + soma); } }

No lugar de soma + 1, você colocar soma + i.

Antonio, na verdade seu código não está com erro na soma como descrito, o que está acontecendo é que você colocou a solicitação de exibição:

System.out.println(soma);

Fora das chaves do While, da forma que está o programa está fazendo o seguinte:

      while (i<=1000){     //inicia o while com contador i*
         soma = soma + 1;    //soma 1 ao valor da variável*
         i++;                // adiciona 1 ao contador

         }   //aqui ele começa todo o while novamente até chegar a 1000
//quando termina o while ele desce para a sua exibição, dessa forma ele só exibe o valor final.
    System.out.println(soma);

Para resolver o seu problema a solicitação de exibição deve estar abaixo do i++ e a cima do }