Comparar se um numero é divisível por 100

8 respostas
L
o que há de errado com a instrução :
public boolean eBissexto ()
{
   boolean valor = true;

 if ( bissexto % 100 ) {

valor == false; 

} else if ( bissexto % 400) {

valor == true;

}

}

Bissexto é uma variavel de instância do tipo int.

8 Respostas

R

Tipo booleano em java não funciona como em C.

Este if só ira funcionar se vc colocar um booleano(ou algo que retorne um) nele.

No casso vc teria que fazer o seguinte

if(numero % 100 == 0){

bla bla

}

ViniGodoy

Essa expressão

a % b

Retorna o resto da divisão de a por b.

Isso é um número inteiro, não um valor booleano. Para ser booleano você deve compara-lo, com ==, >= ou outra expressão lógica de comparação.

Você inverteu as condições, é importante testar por 400 primeiro, pois todo número divisível por 400 é também divisível por 100 (já que 400=100x4).

Também faltou o return e testar a divisão por 4.

public boolean eBissexto(int ano) { if (ano % 400 == 0) return true; if (ano % 100 == 0) return false; if (ano % 4 == 0) return true; return false; }

R

haha sabia que tava estranho!

L

desta forma não estarei comparando o resto da divisão com o valor 0?

ViniGodoy

Sim. E não era isso que você queria?

L

Então ViniGodoy, eu gostaria de saber se o ano que eu digitar é divisível por 100, ou seja se me retornaria um inteiro. Caso sim seria true.

ViniGodoy

Um número é divisível por outro se o resto da divisão dele por esse outro for 0.

Lembre-se, é com o resto que você calcula as casas após a vírgula.

Por exemplo:

12 / 8 = 1, resto 4.

Para calcular após a vírgula:
Multiplicamos o resto por 10: 40, isso nos coloca na primeira casa decimal após a virgula.
Dividimos por 8 novamente.
40 / 8 = 5, resto 0.

Logo, 12 / 8 = 1,5.

Se o resto for zero, com certeza não existem casas após a vírgula.

L

Ah entendi, muito obrigado!

Criado 14 de fevereiro de 2011
Ultima resposta 15 de fev. de 2011
Respostas 8
Participantes 3