0

我是 Java 的初学者,正在为一门课程做一个 Mastermind 项目。

我有个问题。我想检索 的值leftDigit并将其放入 array 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 回答