Метод Java не возвращает ответ в моей программе LCM

Итак, что делает эта программа, так это принимает два числа в качестве входных данных, используя класс Scanner, и вычисляет наименьшее общее кратное этих двух чисел. Кажется, все работает, за исключением того, что метод lcm ничего не возвращает. Возможно, я что-то напутал с моими операторами break, но я не знал другого способа выйти из оператора if, вложенного в цикл while. Еще один вопрос: является ли использование цикла 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;
    }
}

person ethanzh    schedule 27.12.2013    source источник
comment
while (true) будет работать вечно. В какой-то момент вам придется изменить значение running.   -  person Shashank Kadne    schedule 27.12.2013
comment
@ShashankKadne Внутри перерыв. :)   -  person Leri    schedule 27.12.2013
comment
Вы ничего не делаете со значением, возвращаемым методом lcm. Попробуйте распечатать: System.out.println(lcm(firstNumber, secondNumber));   -  person Alexis C.    schedule 27.12.2013
comment
@Leri : Спасибо, я думаю, мне нужен кофе .. :)   -  person Shashank Kadne    schedule 27.12.2013
comment
If anyone has any better alternatives to while(True) loops I'd be happy to hear them Существует, но не альтернатива: while (!yourConditionForBreak) { counter += initialCounter; } Правильная конструкция while цикла - while (conditionWhenLoopShouldExecute) {}   -  person Leri    schedule 27.12.2013


Ответы (3)


Вы что-то возвращаете, просто не печатаете. Просто попробуй:

System.out.println(lcm(firstNumber, secondNumber));
person Keppil    schedule 27.12.2013
comment
Хорошо, так что я действительно должен распечатать его? Значит, это не похоже на Python, где вы можете просто «вернуть» значение? - person ethanzh; 27.12.2013
comment
Если вы хотите, чтобы он выводился на экран, вам нужно его распечатать. Программы Java по умолчанию не выводят возвращаемое значение. - person Keppil; 27.12.2013

Вы не печатаете возвращаемое значение

System.out.println(lcm(firstNumber, secondNumber));
person Keerthivasan    schedule 27.12.2013

Как вы написали,

lcm(firstnumber, secondnumber);

этот метод вернет значение типа int, но в вашем коде вы не получаете возвращаемое значение ни в одной переменной.

Итак, вы должны написать так:

int variable=lcm(firstnumber, secondnumber);
person Puspam    schedule 02.03.2019