如何从do while循环中检索变量值

时间:2012-06-26 19:43:04

标签: java

我是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 );
    }

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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):因为数字和计数都是 int ,所以结果不是浮点数,也不会四舍五入。它只会截断浮动部分。例如:8/3 == 2; 543/1000 == 0。

(2):此行将获得除法的剩余部分。例如:16%5 = 1; 1043%1000 = 43.(写这一行的另一种方法是number = number % count)。

相关问题