Galera, me deparei com um problema confuso, e nele eu tinha que usar o operador de módulo. Olhem o seguinte trecho de código:
int primeiro = 0;
primeiro = primeiro - 7;
primeiro %= 10;
System.out.println(primeiro);
O resultado impresso foi -7! Só que eu fiz o mesmo teste com o Python e o resultado impresso foi 3! E 3 é o valor que eu de fato estava esperando.no Java, ;-; alguém pode me explicar porque isso aconteceu, por favor?
Dúvida sobre o operador de módulo no Java
W
5 Respostas
Na linha 3 você esta fazendo a operação:
primeiro = primeiro(-7) % 10;
O correto seria:
primeiro = 10 % primeiro(-7);
Afinal, o resto da divisão de 10 por 7 é 3. E de 7 por 10?
Espero ter ajudado, abraços!!!
W
Não resolve o meu problema =\ já tentei agora desse jeito e nada.
D
Tanto 3 como -7 são restos da divisão, a diferença está em como ambas são calculadas.
Em Java, -7 / 10 = 0 e -7 % 10 = -7 então 10 * 0 + (-7) = -7
Em Python, -7 // 10 = -1 e -7 % 10 = 3 então 10 * (-1) + 3 = -7
# Python
print (-7//-10); #0
print (-7%-10); #-7
print (-7//10); #-1
print (-7%10); #3
print (7//10); #0
print (7%10); #7
print (7//-10); #-1
print (7%-10); #-3
//Java
System.out.println(-7/-10); // 0
System.out.println(-7%-10); // -7
System.out.println(-7/10); // 0
System.out.println(-7%10); // -7
System.out.println(7/10); // 0
System.out.println(7%10); // 7
System.out.println(7/-10); // 0
System.out.println(7%-10); // 7
W
Minha dúvida é, como obtenho o mesmo resultado que em Python, só que no Java?
Quero fazer o resto da divisão de -7 por 10 e obter 3.
W
Consegui resolver. Para obter o mesmo resultado que eu estava obtendo em Python, eu tive que fazer um truque. Segue como eu fiz:
public class Teste {
public static void main(String[] args) {
int primeiro = 0;
primeiro = (10 + (primeiro - 7)) % 10;
System.out.println(primeiro);
}
}
Criado 11 de fevereiro de 2016
Ultima resposta 11 de fev. de 2016
Respostas 5
Participantes 3