因此,对于我的编程类,我被赋予了编写程序以获取数字的任务,并将该数字放在称为Hailstone序列的内容中,如果我们使用数字15,则看起来像这样:
15是奇数,所以我做3n + 1:46
46是偶数,所以我采取了一半:23
23是奇数,所以我做3n + 1:70
70是偶数,所以我拿了一半:35
35是奇数,所以我做3n + 1:106
106是偶数,所以我拿了一半:5353是奇数,所以我做3n + 1:160
160是偶数,所以我拿了一半:80
80均匀,所以我拿了一半:4040是偶数,所以我拿了一半: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语言的新手。
我将非常感谢能得到的任何帮助!!
答案 0 :(得分:2)
您必须更新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;
}