首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使java程序从前一个循环中获取结果,并将其输入到相同的过程中?

如何使java程序从前一个循环中获取结果,并将其输入到相同的过程中?
EN

Stack Overflow用户
提问于 2014-10-05 05:15:28
回答 1查看 129关注 0票数 0

因此,在我的编程类中,我被赋予了编写一个程序来获取一个数字的任务,并将这个数字输入到一个叫做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。

以下是我到目前为止所写的:

代码语言:javascript
运行
复制
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语言还是很陌生的。

我能得到的任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-05 05:19:14

您必须更新number1的值。因此,在if和the语句中,您需要实际将操作应用于变量。示例:

代码语言:javascript
运行
复制
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;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26199856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档