0

私はJavaの初心者で、コースのMastermindプロジェクトに取り組んでいます。

私は問題があります。leftDigitの値を取得して配列に入れたいguess[4]。しかし、ループの外でそれを取得する方法がわかりません。

たとえば、1234という数字を入力して、それをint[] guess = { 1, 2, 3, 4}; `にしたいとします。

public static void inputNumber(){   

        Scanner input = new Scanner(System.in);
        currentRow++;

        System.out.printf ("Enter 4 numbers for attempt #%d: ", currentRow);

        int count = 10000, leftDigit;
        double tempNum;

        int number = input.nextInt();


        //finding the left digit   
        do{    
            tempNum = (double) number / count ;  
            leftDigit =  (int) (tempNum * 10) ;         
            count /=10;                         
            number = number - ( count * leftDigit);             
        } while (count != 1 );
    }
4

2 に答える 2

1
    int [] guess = new int[4];
    int i = 0;
    //finding the left digit   
    do{    
        tempNum = (double) number / count ;  
        leftDigit =  (int) (tempNum * 10) ;

        guess[i++] = leftDigit;

        count /=10;                         
        number = number - ( count * leftDigit);             
    } while (count != 1 );

    //Use guess as you want it contains the 4 digits you need
于 2012-06-26T19:48:36.553 に答える
0

投稿された解決策は機能しますが、不要なものがいくつかあります。これがコードで、以下で説明します。

int count = 1000;                    // notice I start at 1000, not 10_000
int[] guess = new int[4];
int i = 0;

do {
    guess[i++] = number / count;     // (1)
    number %= count;                 // (2)
    count /= 10;
} while (count != 1)

(1): numberとcountの両方がintと入力されるため、結果は浮動小数点数にならず、切り上げられません。フローティング部分を切り捨てるだけです。例:8/3 == 2; 543/1000==0。

(2):この行は除算の余りを取得します。例:16%5 = 1; 1043%1000 =43。(この行を記述する別の方法はnumber = number % count)です。

于 2012-06-29T17:47:24.513 に答える