このプログラムはJava用です。それはCollatzの推測をするために訴えられました。私のmingでコードはうまくいくはずですが、7を入力すると22の束が印刷されます。javaはintを正しく保存しません
import java.util.*;
//If n is even, divide it by 2 to get n/2. If n is odd, multiply it by 3 . and add 1
public class infNum {
private int num;
private int n;
private String comma = ", ";
public void start() {
System.out.println("enter a number");
Scanner keyboard = new Scanner (System.in);
int n = keyboard.nextInt();
num = n;
}
public void testEvenOdd() {
if((num % 2) == 0) {
ifEven(num);
} else {
ifOdd(num);
}
}
public void ifEven(int num) {
if(num == 1) {
return;
} else {
num = num/2;
System.out.print(num + comma);
testEvenOdd();
}
}
public void ifOdd(int num) {
if(num == 1) {
return;
} else {
num = (num * 3) +1;
System.out.print(num + comma);
testEvenOdd();
}
}
}
まあ、「7」は奇数です。 '7 * 3'は21、' 21 + 1' **は** '22'です。あなたのプログラムが、あなたが言ったこととまったく同じように見えます。 –
これはどうですか?開始メソッドはどこですか?開始の場合、ほかのメソッドは呼び出されません。 –
あなたの 'testEvenOdd'メソッドが' num'インスタンス変数をチェックし、他のメソッドが決してそれを更新しないという問題がさらにあります。現在は、独自のパラメータのみを更新します。パラメータは、メソッドの終了時に範囲外になります。 – azurefrog