2012-06-26 5 views
0

저는 Java 초보자이며 과정 마스터 마스터 프로젝트를 진행하고 있습니다.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) : 모두 수와 횟수가 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

'Homework' 태그가 주어지면 개봉 된 것, 변경된 것, OP의 솔루션과 다른 점에 대해 조금 설명하면 더 좋을 것입니다. – acattle

+0

감사합니다, Nitin Chhajer! 고마워요! –