我需要有关此循环的帮助。我的课程任务之一是制作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中将xstlcmFind变量设为本地。因为仅在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);
}

10-04 18:02