Java 为什么返回错误的模答案?
这将返回-3而不是2。它用一个正数做了正确的计算。请帮忙,我似乎找不到解决办法 使用Java 为什么返回错误的模答案?,java,android,Java,Android,这将返回-3而不是2。它用一个正数做了正确的计算。请帮忙,我似乎找不到解决办法 使用%运算符,余数的符号必须与股息的符号匹配(或为0),根据: 二进制数字提升(§5.6.2)后的整数操作数的余数运算产生一个结果值,使得(a/b)*b+(a%b)等于a 根据这条规则,余数运算的结果只能在红利为负时为负,并且只能在红利为正时为正。此外,结果的大小总是小于除数的大小 事实上,(-33/5)*5+(-33%5)变成了-6*5+(-3),等于-33 要获得正结果,必须有正的红利。根据以下条件,使用%运算符
%
运算符,余数的符号必须与股息的符号匹配(或为0),根据:
二进制数字提升(§5.6.2)后的整数操作数的余数运算产生一个结果值,使得(a/b)*b+(a%b)等于a
根据这条规则,余数运算的结果只能在红利为负时为负,并且只能在红利为正时为正。此外,结果的大小总是小于除数的大小
事实上,(-33/5)*5+(-33%5)
变成了-6*5+(-3)
,等于-33
要获得正结果,必须有正的红利。根据以下条件,使用
%
运算符,余数的符号必须与红利的符号匹配(或为0):
二进制数字提升(§5.6.2)后的整数操作数的余数运算产生一个结果值,使得(a/b)*b+(a%b)等于a
根据这条规则,余数运算的结果只能在红利为负时为负,并且只能在红利为正时为正。此外,结果的大小总是小于除数的大小
事实上,(-33/5)*5+(-33%5)
变成了-6*5+(-3)
,等于-33
要获得积极的结果,您必须获得积极的红利。根据:
整数操作数的余数运算。。。生成一个结果值,使(a/b)*b+(a%b)等于a
在您的示例中,a=-33和b=5。因此:
private int mCurrentIndex = 0;
mPrevButton = (Button)findViewById(R.id.prev_button);
mPrevButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCurrentIndex = (-33 % 5);
Log.i("IndexClick", String.valueOf(mCurrentIndex));
}
});
根据报告:
整数操作数的余数运算。。。生成一个结果值,使(a/b)*b+(a%b)等于a
在您的示例中,a=-33和b=5。因此:
private int mCurrentIndex = 0;
mPrevButton = (Button)findViewById(R.id.prev_button);
mPrevButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCurrentIndex = (-33 % 5);
Log.i("IndexClick", String.valueOf(mCurrentIndex));
}
});
为什么它会在谷歌搜索中返回2?@turbo type-33%5。啊,我现在明白了,从来没有必要对负数进行模化number@turbo我将迭代一个数组,我必须保护它不受负数的影响。为什么它会在谷歌搜索中返回2?@turbo type-33%5。啊,我现在明白了,从来没有必要对负数进行模化number@turbo我将迭代一个数组,我必须保护它不受负数的影响。同样,为了获得
2
而不是-3
OP可以在结果中添加5,如果新结果不是负值,则再次使用模5,如(-33%5+5)%5
+1用于JLS。同样,为了得到2
而不是-3
OP可以在结果中添加5,如果新结果不是负值,则再次使用模5,如(-33%5+5)%5