因此,在我的编程类中,我被赋予了编写一个程序来获取一个数字的任务,并将这个数字输入到一个叫做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。
基本上,你输入一个数字,程序检查这个数字是奇数还是偶数,基于这个数字,它通过两个进程之一把这个数字相乘,然后再加一个,或者把这个数字除以一半,直到最后的结果只有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语言还是很陌生的。
我能得到的任何帮助都将不胜感激!
发布于 2014-10-05 05:19:14
您必须更新number1的值。因此,在if和the语句中,您需要实际将操作应用于变量。示例:
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;
}https://stackoverflow.com/questions/26199856
复制相似问题