亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

繼續打印一個數字,直到該數字在 Java 中等于 1

繼續打印一個數字,直到該數字在 Java 中等于 1

繁花不似錦 2021-10-13 13:32:22
我有一個代碼,它生成一個隨機數并打印一個以這個隨機數開頭的數字序列。我希望序列在數字等于 1 時結束。這是我嘗試過的,但似乎不起作用。package Collatz;import java.io.PrintStream;import java.util.Random;class Collatz {    PrintStream out;    Collatz() {         out = new PrintStream(System.out);     }    void start() {        int number = 0;         Random random = new Random();        int rand = random.nextInt(100);        number = rand;        for(;;) {            if(number % 2 == 0) {                number = number / 2;                out.printf("%d \n",number);            }            if(number % 2 != 0) {                number = (3* number) + 1;                out.printf("%d \n",number);                if(number == 1){                    out.printf("%d \n",number);                    break;                }            }        }    }    public static void main(String[] argv) {        new Collatz().start();    }}
查看完整描述

3 回答

?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

你的錯誤在這里:

            if(number % 2 != 0) {
                number = (3* number) + 1;
                out.printf("%d \n",number);
                       if(number == 1){

在檢查它是否為 1 之前,您將數字從 1 變成偶數(通過乘以 3 并加 1)。偶數不會是 1。

要修復它,請更改之前檢查是否number為 1 。number


查看完整回答
反對 回復 2021-10-13
?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

void start() {

    int number = 0; 

    Random random = new Random();

    int rand = random.nextInt(100);

    number = rand;

    while(number!=1) {

        if(number % 2 == 0) {

            number = number / 2;

            out.printf("%d \n",number);

        }

        if(number % 2 != 0) {

            number = (3* number) + 1;

            out.printf("%d \n",number);

        }

    }

    out.printf("%d \n",number);

}

在檢查號碼是否為“1”之前,您正在更新號碼,這可能會給您帶來該問題。而不是打破'for'循環,只需將循環更改為while,它將檢查數字是否為'1'。如果是,則不會執行循環。最后打印數字,即“1”。干杯!


查看完整回答
反對 回復 2021-10-13
?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

package Collatz;


import java.io.PrintStream;

import java.util.Random;


class Collatz {


    PrintStream out;


    Collatz() { 

    out = new PrintStream(System.out); 

    }


void start() {

    int number = 0; 

    Random random = new Random();

    int rand = random.nextInt(100);

    number = rand;

for(;;) {

if(number % 2 == 0) {

    number = number / 2;

        out.printf("%d \n",number);

        }

if(number == 1){

        out.printf("%d \n",number);

        break;

        }

if(number % 2 != 0) {

    number = (3* number) + 1;

    out.printf("%d \n",number);

    }


}

}

public static void main(String[] argv) {

    new Collatz().start();

    }

    }


查看完整回答
反對 回復 2021-10-13
  • 3 回答
  • 0 關注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號