0

所以这个程序所做的是使用 Scanner 类将两个数字作为输入,并计算这两个数字的最小公倍数。一切似乎都在工作,除了 lcm 方法不会返回任何东西。我的“break”语句可能搞砸了,但我不知道有任何其他方法可以摆脱嵌套在 while 循环中的 if 语句。还有一个问题:使用 while(True) 循环是好做法还是坏做法?因为我看到了很多关于它的不同意见。如果有人对 while(True) 循环有更好的选择,我会很高兴听到它们。谢谢!

// LCM Calculator
// Author: Ethan Houston
// Language: Java
// Date: 2013-12-27

import java.io.*;
import java.util.Scanner;

public class lcm {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("This is a LCM calculator\n");
        System.out.println("Enter your first number: ");
        int firstNumber = scanner.nextInt();
        System.out.println("Enter your second number: ");
        int secondNumber = scanner.nextInt();
        lcm(firstNumber, secondNumber);

    }

    public static int lcm(int one, int two) {
        int counter = Math.min(one, two);
        int initialCounter = counter;
        boolean running = true;
        while (running) {
            if (counter % one == 0 && counter % two == 0) {
                break;

            } else {
                counter += initialCounter;
            }

        }
        return counter;
    }
}
4

3 回答 3

3

你确实返回了一些东西,你只是没有打印它。试试看嘛:

System.out.println(lcm(firstNumber, secondNumber));
于 2013-12-27T11:39:46.167 回答
2

您没有打印返回值

System.out.println(lcm(firstNumber, secondNumber));
于 2013-12-27T11:39:47.313 回答
0

正如你所写,

lcm(firstnumber, secondnumber);

此方法将返回一个 int 类型值,但在您的代码中,您没有在任何变量中获取返回值。

所以,你应该这样写:

int variable=lcm(firstnumber, secondnumber);
于 2019-03-02T08:57:09.190 回答