Итак, что делает эта программа, так это принимает два числа в качестве входных данных, используя класс 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;
}
}
while (true)
будет работать вечно. В какой-то момент вам придется изменить значениеrunning
. - person Shashank Kadne   schedule 27.12.2013lcm
. Попробуйте распечатать:System.out.println(lcm(firstNumber, secondNumber));
- person Alexis C.   schedule 27.12.2013If 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