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

标签 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 语言还很陌生。

如果我能得到任何帮助,我将不胜感激!!

最佳答案

您必须更新 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/

相关文章:

java - 如何使 JFileChooser 仅查看和选择声音文件并将它们保存在某个地方?

无法建立正确的采集循环 - C

swift - 正确的 swift 2.2 语法和 for 循环

javascript - 如何在 JavaScript 中访问嵌套 for 循环之外的变量

variables - FOR 循环中的 FINDSTR 变量作为字符串(批处理文件)

java - 如何将main方法类转为Junit测试类?

Java Swing 相关字段验证

javascript - 当我运行此代码时,它告诉我 AnimalIindex 未定义?

java - 有选择地覆盖 Swing 组件?

javascript - Promise.all() 的行为出乎意料,我哪里缺乏理解?