Java 为什么我们在第二个println上得到1作为余数?

Java 为什么我们在第二个println上得到1作为余数?,java,coding-style,modulus,Java,Coding Style,Modulus,因为整数不是实数,所以答案是1,余数的实数部分被忽略,因为您将i定义为整数这是Java用来生成其操作数余数的公式: package PracticePackage; public class whileLoop { public static void main(String[] args) { int i=1; System.out.println("Quotient "+i/2); System.out.println(

因为整数不是实数,所以答案是1,余数的实数部分被忽略,因为您将
i
定义为整数

这是Java用来生成其操作数余数的公式:

package PracticePackage;

public class whileLoop {

    public static void main(String[] args) {

        int i=1;

        System.out.println("Quotient "+i/2);    
        System.out.println("Remainder "+i%2);

    }

}
其中,
a
是被除数,
b
是除数

所以在你的情况下,它就像:

(a/b)*b+(a%b)
因此结果是
1
而不是
0

1/2=0.5

您将
i
定义为
int
如果答案是实数,java中的整数除法将占据答案的底部,因此1/2变为0,使1%2等于1


我希望这能解释清楚。

你能更详细地解释一下你的问题吗?不清楚您实际想要什么,也不清楚显示的代码为什么不能满足您的需要。您得到1是因为
1%2==1
。你期望的是什么?我期望的是0。它是如何变成1的?请解释一下,好的。但余数是0,零是实的。为什么0不是输出?我很困惑。0也是一个整数。余数是1,因为1+(0*2)=1
int i = 1; 
int b = 2;
int result = (i / b) * b + (i % b);