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

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”。干杯!

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();
}
}
添加回答
舉報