因此,在我的编程课上,我的任务是编写一个程序来获取一个数字,并将该数字放入称为 Hailstone 序列的序列中,如果我们使用数字 15,则该序列看起来像这样:
15 是奇数,所以我得到 3n+1: 46
46 是偶数,所以我取一半:23
23 是奇数,所以我得到 3n+1: 70
70 是偶数,所以我取一半:35
35 是奇数,所以我得到 3n+1: 106
106 是偶数,所以我取一半:53
53 是奇数,所以我得到 3n+1: 160
160 是偶数,所以我取一半:80
80 是偶数,所以我取一半:40
40 是偶数,所以我取一半:20
20 是偶数,所以我取一半:10
10 是偶数,所以我取一半:5
5 是奇数,所以我得到 3n+1: 16
16 是偶数,所以我取一半:8
8 是偶数,所以我取一半:4
4 是偶数,所以我取一半:2
2 是偶数,所以我取一半:1
基本上,您输入一个数字,程序会检查该数字是奇数还是偶数,并根据该结果将该数字通过两个过程之一:将该数字乘以 3,然后加一,或者只是将数字除以两半,直到最终结果为 1。
这是我到目前为止所写的内容:
public static void main(String[] args) {
// TODO Auto-generated method stub
int number;
System.out.println("Please enter a number:");
Scanner s = new Scanner (System.in);
double number1 = s.nextDouble();
while (number1 > 1){
if ( number1 % 2 == 0)
System.out.println(number1 + " is even, so I take half " + (number1 / 2));
else
System.out.println(number1 + " is odd, so I make 3n + 1 " + ((3 * number1) + 1));
}
它会提示我输入一个数字,我输入一个数字,它会正确识别该数字是奇数还是偶数,并将其输入适当的公式,而不是使用给定的结果重复该过程直到我们将数字减少到 1,它才会陷入对给定初始数字结果的无限循环。
我的问题是,如何让我的程序获取循环的结果,并获取该数字并将其输入到过程中,然后继续使用出现的下一个数字重复该过程,依此类推,直到我们将其减少到一。如何跳出无限循环?我很抱歉无法更清楚地表达这一点,我对 Java 语言还很陌生。
如果我能得到任何帮助,我将不胜感激!!
最佳答案
您必须更新 number1 的值。因此,在 if 和 else 语句中,您需要实际将操作应用于变量。示例:
if ( number1 % 2 == 0)
{
System.out.println(number1 + " is even, so I take half " + (number1 / 2));
number1 = number1 / 2;
}
else
{
System.out.println(number1 + " is odd, so I make 3n + 1 " + ((3 * number1) + 1)
number1 = (3*number1) + 1;
}
关于java - 如何让 java 程序获取前一个循环的结果并将其输入到同一进程中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26199856/