如何让java程序获取前一个循环的结果并在同一个进程中输入?

时间:2014-10-05 05:15:28

标签: java loops for-loop while-loop

因此,对于我的编程类,我被赋予了编写程序以获取数字的任务,并将该数字放在称为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语言的新手。

我将非常感谢能得到的任何帮助!!

1 个答案:

答案 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;
}