Apostila FJ11, Exercício 2, pág. 26

  1. imprima a soma de 1 até 1000.

Eu fiz desta forma:

public class Exercicio02
{
	public static void main(String[] args)
	{
		for (int i = 1; i <= 1000; i += i)
		{
			System.out.println(i);
		}
	}
}

Tá certo? :roll:

Olá,

Não está não.
Perceba o que acontece:

Se vizesse de 1 a 1000 no papel, olhe como ficaria (o inicio)
1 + 2 + 3 + 4 + 5 = 15 (de 1 a 5)

Coloque i <= 5 e teste. Deu o mesmo resultado?

Seu “i” chega no 1000 muito rápido, pq vc vai dobrando o valor de i a cada iteração ( i += i ).

O certo seria vc ter o contador i, que vai de 0 a 999 (ou de 1 a 1000) e usar uma segunda variável para armazenar a soma, ai você não mistura os “papéis” das variáveis. Olhe os exemplos:

int soma = 0; for ( int i = 0; i < 1000; i++ ) { soma += i + 1; // i inicia em 0, então precisa ser ajustado em +1 unidade } System.out.println( soma );

ou

int soma = 0; for ( int i = 1; i <= 1000; i++ ) { soma += i; } System.out.println( soma );

Perceba a diferença entre os exemplos. No primeiro, i inicia com 0 e vai até 999, no segundo, i inicia com 1 e vai até 1000.
Apesar de o segundo exemplo ser mais claro no que acontece, tente se acostumar a usar sempre os contadores iniciando em 0, pq normalmente vc vai usar um for para percorrer um array, e o primeiro índice de um array é 0.

[]´s