2012-06-26 69 views
0

我是一名Java初學者,正在從事一門課程的Mastermind項目。如何從do while循環中檢索變量值

我有一個問題。我想檢索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); 
    } 
+0

沒有關注你。你怎麼了? leftDigit在循環範圍之外是可用的,所以你可以正常分配它。或者你想在某個時候使用'break'離開循環? – Miquel

回答

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):,因爲這兩個號碼和count類型INT,結果將不會是一個浮點數,它不會被四捨五入向上。它只會截斷浮動部分。例如:8/3 == 2; 543/1000 == 0.

(2):該行將獲得該部門的其餘部分。例如:16%5 = 1; 1043%1000 = 43.(寫這行的另一種方法是number = number % count)。

+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 
+0

鑑於'家庭作業'標籤,如果你對你在做什麼,你做了什麼改變,與OP的解決方案有什麼不同,會更好。 – acattle

+0

謝謝Nitin Chhajer!非常感謝你 ! –