# while 문
#### CODE <a class='btn btn-default' href='/codes/47661'>Link</a>
```
public class test{
public static void main(String[]args){
int n=Integer.parseInt(args[0]);
mid(n); //여기서 mid 메소드를 호출하고, 바로 위에서 지정해준 변수를 mid 메소드에 입력값으로 넣는다.
}
public static void mid(int a){ // 여기서 mid 매소드를 정의한다.
// ?궁금점 : mid 메소드를 정의할때 괄호안의 입력변수는 int a이고,
// 위에서 메소드 호출시 입력값으로 사용되는 변수는 n 인데,
// 문자가 서로 달라도 코드 실행하는덴 상관이 없네요.
// 일치 시키지 않아도 되는건가요??
System.out.println("카운트 다운을 시작합니다..");
while(a>=0){
System.out.printf("%d..\n",a);
a--;
}
System.out.println("발사!!");
}
}
```
#### INPUT
```
5
```
#### OUPUT
```
카운트 다운을 시작합니다..
5..
4..
3..
2..
1..
0..
발사!!
```
sehongpark님의 답변
# 변수의 스코프와 파라미터로 값 전달
main() 메소드의 n과 mid() 메소드의 파라미터 a는 서로 다른 변수입니다.
이는 서울 철수와 부산 철수가 서로 다른 사람인 것과 같은데요.
```
public class test{
public static void main(String[]args){
int n = Integer.parseInt(args[0]); // n은 main() 메소드에서 정의된 변수
mid(n); // n의 값을 mid() 메소드로 전달. 가령, n의 값이 4라고 한다면
}
public static void mid(int a) { // int a = 4; 가 수행 됨. 이러한 값 전달은 n과 a는 변수명과는 상관이 없음.
System.out.println("카운트 다운을 시작합니다..");
while(a>=0){
System.out.printf("%d..\n",a);
a--;
}
System.out.println("발사!!");
}
}
```
예시 코드의 n에 4라는 값이 저장되있다 할 때,
메소드 호출 시 4는 파라미터 a로 대입됩니다.
이는 마치 A 친구의 포스트잇(int n)에 적힌 값 4를
B 친구가 보고 자기 포스트잇(int a)에 받아 적는 것과 같습니다.