我是Java的初学者,我在网上找到了根据Collatz Sequence逻辑运行的练习。它根据输入的起始编号显示正确的输出。它还显示了该过程中的步骤数。
但是,练习的最后一部分要求确定输出中的最大值。
我不确定如何使用我目前的Java初学者知识(我只学习和练习直到while和while while循环 - 几周前开始)。到目前为止,这是我的代码,我一直在努力。 :D我想完成这个并学习如何确定最大值。谢谢! Collatz Sequence Exercise
import java.util.Scanner;
public class CollatzSequence {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int number, steps = 0;
System.out.print("Enter a number ~ ");
number = keyboard.nextInt();
System.out.println(number);
do {
steps++;
if (number % 2 == 0) {
number = number / 2;
System.out.println(number);
}
else {
number = (3 * number) + 1;
System.out.println(number);
}
} while (number != 1);
System.out.println("\nThis took " + steps + " steps.");
}
}
答案 0 :(得分:4)
您可以跟踪变量maxNumber
。将其初始化为数字:
System.out.print("Enter a number ~ ");
number = keyboard.nextInt();
maxNumber = number;
在循环中,测试当前数字是否更高,如果是,请将maxNumber替换为数字。
...
if (number > maxNumber) {
maxNumber = number;
}
} while (number != 1);
打印出来,因为你想知道它:
System.out.println(String.format("\nThis took %d steps. Max was: %d", steps , maxNumber));
答案 1 :(得分:2)
以下代码将执行最大数量计算
import java.util.Scanner;
public class CollatzSequence {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int number = 0, steps = 0;
int maxVal;
do {
System.out.print("Enter a positive number ~ ");
number = keyboard.nextInt();
maxVal = number;
System.out.println(number);
} while (number <= 0);
do {
steps++;
if (number % 2 == 0) {
number = number / 2;
}
else {
number = (3 * number) + 1;
}
System.out.println(number);
if (number > maxVal) {
maxVal = number;
}
} while (number != 1);
System.out.println("\nThis took " + steps + " steps.");
System.out.println("\nMax Number is " + maxVal);
}
}