【问题标题】:Java method won't return answer in my LCM programJava 方法不会在我的 LCM 程序中返回答案
【发布时间】:2014-01-15 00:07:18
【问题描述】:

所以这个程序所做的是使用 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;
    }
}

【问题讨论】:

  • while (true) 将永远运行。您必须在某个时间点更改 running 的值。
  • @ShashankKadne 里面有休息。 :)
  • 您没有对lcm 方法返回的值做任何事情。尝试打印:System.out.println(lcm(firstNumber, secondNumber));
  • @Leri : 谢谢,我想我需要点咖啡..:)
  • If anyone has any better alternatives to while(True) loops I'd be happy to hear them 有但不能替代:while (!yourConditionForBreak) { counter += initialCounter; } while 循环的正确构造是 while (conditionWhenLoopShouldExecute) {}

标签: java if-statement while-loop break lcm


【解决方案1】:

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

System.out.println(lcm(firstNumber, secondNumber));

【讨论】:

  • 好的,所以我实际上必须打印它?所以它不像 Python 那样可以“返回”一个值?
  • 如果你想把它输出到屏幕上,你需要打印它。 Java 程序默认不输出返回值。
【解决方案2】:

你没有打印返回值

System.out.println(lcm(firstNumber, secondNumber));

【讨论】:

    【解决方案3】:

    正如你所写,

    lcm(firstnumber, secondnumber);
    

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

    所以,你应该这样写:

    int variable=lcm(firstnumber, secondnumber);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-24
      • 2022-08-18
      • 1970-01-01
      • 2016-08-26
      • 2015-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多