我需要有关此循环的帮助。我的课程任务之一是制作LCM程序。
Sample output:
(8,12) LCM is 24
(4,3) LCM is 12
(5,10,20) LCM is 20
(18,24,52) LCM is 936
(12,10,26) LCM is 780
(99,63,24) LCM is 5544
(62,16,24) LCM is 1488
到目前为止,我有2个号码,但是我不确定如何做3个号码。我们应该在其他类上使用方法,所以这就是我在LCM类上使用的方法。
public class LCM {
private int n, x, s = 1, t = 1;
public LCM()
{
n = 0;
x = 0;
s = 1;
t = 1;
}
public int lcmFind(int i, int y) {
for (n = 1;; n++) {
s = i * n;
for (x = 1; t < s; x++) {
t = y * x;
}
if (s == t)
break;
}
return (s);
}
}
最佳答案
如果要获取3个以上数字的LCM,可以按以下方式使用方法lcmFind
:
int a = 2;
int b = 3;
int c = 5;
LCM l = new LCM();
int lcm = l.lcmFind(l.lcmFind(a, b), c);
推荐:
在
n
中将x
,s
,t
和lcmFind
变量设为本地。因为仅在lcmFind
方法中需要它们,并且每次lcmFind
调用时都需要重置它们的值。使您的
lcmFind
方法静态。您无需实例化新对象即可计算lcm。这样,您可以像LCM.lcmFind(3,4)
一样使用它,甚至可以使用更好的重命名方法并像LCM.find(3,4)
这样使用。编辑
如果需要使方法采用可变数量的参数,则应检查varargs。这样您会得到类似以下内容的信息:
public int lcmFind(int.. args) {
// args is actually array of ints.
// calculate lcm of all values in array.
// usage: lcmFind(1,4) or lcmFind(1,5,6,3)
}
您可以使用带有两个参数的
lcmFind
的第一个版本,并使用它来计算1cm的许多值。编辑2
如果只需要
lcmFind
的2和3-args版本,则只需添加3-arg版本:public int lcmFind(int a, int b, int c) {
return lcmFind(lcmFind(a, b), c);
}