Java 有限整型元素域中的加法?
我需要编写一个具有以下输入的函数(Java):Java 有限整型元素域中的加法?,java,math,algebra,Java,Math,Algebra,我需要编写一个具有以下输入的函数(Java): int-amountFieldElements int summandOne int summandTwo amountFieldElement描述从1开始的整数数量(例如1、2、3、4或仅1)summandOne是此范围内的整数,summandTwo可以是任何非负整数 该函数必须将summandTwo添加到summandOne。如果结果大于amountFieldElement,则必须从1开始 我试图简单地使用模:(summandOne+summa
int-amountFieldElements
int summandOne
int summandTwo
amountFieldElement
描述从1开始的整数数量(例如1、2、3、4或仅1)summandOne
是此范围内的整数,summandTwo
可以是任何非负整数
该函数必须将summandTwo
添加到summandOne
。如果结果大于amountFieldElement,则必须从1开始
我试图简单地使用模:(summandOne+summandTwo)%amountFieldElements
但这通常是错误的,例如(3+1)%4=0
,但我需要它是4
示例:如果amountFieldElements=4
:
2+2=4
将保持为4
3+2=5
将变成1
4+2=6
将变成2
等
或对于amountFieldElements=1
1+0=1
将保持为1
1+1=2
也将是1
->这里的任何结果都是1类似这样的结果会起作用:
int result = (summandOne + summandTwo) % amountFieldElements;
if (result == 0) result = amountFieldElements;
另一种较短但较难理解的方法是:
int result = (summandOne + summandTwo - 1) % amountFieldElements + 1;
我不明白
amountFieldElements
的目的是什么。。。你能再解释一下吗?你的意思是像amountFieldElements+1一样的(summandOne+summandTwo-1)%amountFieldElements+1
?负数会变得更加棘手,但您没有指定应该在那里发生什么。如果总和大于amountFieldElements,则必须将其设置为较低的数字,类似于mod操作。例如,如果amountFieldElement=4:2+2=4将保持不变,因为4 3+2=5将变为1 4+2=6将变为2等,请添加具体输入和相应输出的示例。为什么4+2=6将变为2?我记得你说过amountFieldElements是从1开始的?嘿,这和我现在拥有的一模一样。我认为必须有更好/更优雅的方法来解决这个问题。但是,确认我所想的方法似乎是有效的,这也很棒!