Exercício 3.8 - 4 - Não compila - Quem puder ajudar, Agradeço!

Prezados,
O exercício da apostila “Caelum - Java e Orientação a Objetos”, pag 18 (22 em pdf) pede para imprimir uma determinada quantidade de nº e escrever se eles são múltiplos de três. Na apostila da a dica para usar o operador “%”, não consegui compilar, aparece o erro em anexo. Abaixo segue o código que criei:

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

double i;
i = 1;

while (i <= 100) {
System.out.println (i);

if ((i%3) = 0) {
System.out.println (“Multiplo de 3”);

}

i = i + 1;

}
}
}[/code]

Desde já, obrigado!!

Comparação se faz com == , ele reclama do % pois você está sem querer tentando atribuir ( = ) um valor( 0 ) a algo que não é uma variável( i%3 ).

Até!

Lembre-se de informar o erro gerado ao compilar e/ou executar. Este exemplo foi fácil de ver, mas pode surgir alguns que sejam mais difíceis e que sejam apresentados somente para vc.

Forte abraço

simples variaveis locais deve ser inicializadas veja q vc tem int dentro de um metodo, e esse int so existe enquanto o metodo tiver sendo executando… agora variaveis de intancia sao inicializadas automaticamente veja a diferença

class D{
int i=1;

public static void main(String arg[]){
int z=1;
System.out.println(i);// imprime 0
System.println(z);//1

o seu erro de compilacao foi devido vc usar uma variavel local sem declarar explicitamente o seu valor…
assim tava olhando seu codigo mais uma vez e vc colocou = dentro de um if isso nao eh valido se o valor nao for uma boolean…
flw!!

[quote=camilolopes]simples variaveis locais deve ser inicializadas veja q vc tem int dentro de um metodo, e esse int so existe enquanto o metodo tiver sendo executando… agora variaveis de intancia sao inicializadas automaticamente veja a diferença

class D{
int i=1;

public static void main(String arg[]){
int z=0;
System.out.println(i);// imprime 0
System.println(z);//1

o seu erro de compilacao foi devido vc usar uma variavel local sem declarar explicitamente o seu valor…
flw!![/quote]

O pior é que não foi. Nesse trecho:

if ((i%3) = 0) {
      System.out.println ("Multiplo de 3");
}

Ele está atribuindo um valor ( 0 ) a um valor ( i%3 , que pode ser 0, 1 ou 2 mas nunca uma variável ). O compilador para aí quando encontra essa situação reclamando do %.

Até!

eh exato, o operador de = nao eh permitido no if, caso nao seja um valor boolean… vc acredita que eu nao viq ele inicializou a variavel?
aumentar meu grau… ta mal

Pessoal, deu certo!
Obrigado pela ajuda, foi um detalhe… e que eu havia visto na apostila mas nem me lembrei na hora do código.
Ah, eu havia colocado a imagem da compilação em anexo, quando mandei enviar apareceu a imagem p/ mim.

Obrigado pela ajuda!!