2013-05-14 7 views
-1

Java의 do-while 루프에서 변수에 액세스하려면 어떻게합니까? 것이면do-while 루프 내에서 변수에 액세스

import java.util.Scanner; 

public class DoWhileRange { 
    public static void main(String[] args) { 
     do{ 
      System.out.println("Enter a number between 0 an 10"); 
      Scanner in = new Scanner(System.in); 
      int a = in.nextInt(); 
       int total +=0; 
     }while (a>0 && a<10); 

     System.out.println("Loop Terminated"); 
     System.out.println("The total is : "+total); 
    } 
} 

루프의 입력을 요청하는 것을 계속 : 입력 값이 여기 내 코드 아니다

0 내지 10

때까지

는 아래의 코드 값을 써 입력은 0과 10 사이입니다. 다른 숫자가 입력되면 루프가 종료되고 입력 된 모든 숫자의 합계가 표시됩니다.

+2

질문이 명확하지 않다. –

+0

무엇을하려고합니까? * 어디에서 * 변수에 액세스하려고합니까? –

+1

아래의 답변에 덧붙여'(a> = 0 && a <= 10)'을 의미 할 것입니다. – Blorgbeard

답변

1

이 같은 시도 (루프 외부 변수 a를 선언) 시도 :

int a = -1; 
    do{ 
     System.out.println("Enter a number between 0 an 10"); 
     Scanner in = new Scanner(System.in); 
     a = in.nextInt(); 
    }while (a>0 && a<10); 
+0

답변 해 주셔서 감사합니다.하지만 int int = 0이 아닌 int a = -1을 intialiazing하는 이유는 무엇입니까? – hayonj

+0

0이 될 수도 있지만 더 안전한쪽으로 가기 위해> 0을 검사하지만 나중에 0을 포함 할 수도 있지만 음수를 포함 할 확률은 훨씬 적습니다 –

+1

재미있는 개념 ... 확실히 유지할 것입니다 .. 그것은 지금 몇 줄을 절약 할 수 있습니다. 그리고 나는 ... 결코 그것에 대해 생각하지 않았습니다! – hayonj

2

루프 밖의 변수에 액세스하려면 루프 외부에서 변수를 선언/초기화 한 다음 루프 내에서 변수를 변경해야합니다. 문제의 변수가 int가 아니면 null로 초기화하는 것이 좋습니다.

import java.util.Scanner; 

public class DoWhileRange { 
    public static void main(String[] args) { 
     int a = 0; //create it here 
     do { 
      System.out.println("Enter a number between 0 an 10"); 
      Scanner in = new Scanner(System.in); 
      a = in.nextInt(); 
     } while (a>0 && a<10); 
     System.out.println("Loop Terminated"); 
     // do something with a 
    } 
} 

참고 : 당신이 null로 int로 변수를 초기화 할 수 없습니다 때문에, 당신은 어떤 임의의 값으로 초기화해야합니다 (당신이 간단하게 초기화하지 않고 루프 전에 변수를 선언하면 당 @ Evginy의 대답) 루프 외부에서 액세스 할 수 있지만 컴파일러는 초기화되지 않았다고 불평 할 것입니다.

+0

감사합니다. – hayonj

0

Scanner in = new Scanner(System.in); 
    int a; 
    do { 
     System.out.println("Enter a number between 0 an 10"); 
     a = in.nextInt(); 
    } while (a > 0 && a < 10); 
    System.out.println("Loop Terminated"); 
+0

답장을 보내 주셔서 감사합니다. 그러나 나는'Scanner in = Scanner (System.in);을 루프 안쪽에두고 싶습니다. 루프 밖에서 실제로 신경 쓰지는 않습니다. – hayonj

관련 문제