[인터돌™] 공부 해보자!! 열심히~~~

반응형
질문: 자바의 args로 *가 들어가면 왜 args의 갯수가 한개가 아니라 여러개로 계산하나요? blueweed / 2006-08-29 23:46

안녕하세요. 자바의 매개변수에 관해서 질문 올립니다.


public class test
{
 public static void main(String args[]){
  System.out.println(args.length);
 }
}


이런 코드를 만들었습니다. 매개변수로 입력받은 인자의 수를 출력하는 것인데, 콘솔에서

java test aaa

java test 123


이런식으로 입력을 하게 되면 인자는 한개이므로 1이 나옵니다. 그런데


java test *


이렇게 입력을 하면 그 값이 11이 나올때도 있었고, 12가 나올때도 있네요.

D:프로그래밍자바Hello>java test *
12

D:프로그래밍자바Hello>java test aaa
1

D:프로그래밍자바Hello>java test +
1

D:프로그래밍자바Hello>java test +-
1

D:프로그래밍자바Hello>java test *
12

D:프로그래밍자바Hello>java test * 1
13

D:프로그래밍자바Hello>java test 2 3 a
3

이런식으로요. *는 어째서 인자값이 한개가 아닌 여러개로 나오는지, 그리고 정상적으로 인자값 1개로 인식되게 할려면 어떻게 해야 하는지 알고 싶습니다.


감사합니다.

답변: sun 에서 만들어서 ...;;; piyoro / 2006-08-28 23:26

자바가 sun에서 만든 프로그램이라는걸 이미 알고 계실 겁니다.


Linux 혹은... 윈도우의 ms-dos에서도 '*' 이라는 캐릭터는


와일드 카드 라고 하여 *.txt ... 같은 식으로 검색을 하면.


확장자가 txt 인 모든 파일을 검색을 합니다.


이게 조금 불안정하게도 컴파일시에도 '*' 라는 문자를 이용하면


현재 폴더내의 모든 파일을 검색해버리게됩니다.


그렇게 되서 11 혹은 12가 되는것도 파일 수가 출력이 되는거죠...


11이 되었다가 12가 되는건 아마도 어떤 파일을 지웠다가 실행하고 ...


뭐... 이런식으로 실행하셔서 그럴겁니다.


public static void main(String[] args) 에서


for (int i = 0; i < args.length; i++) {
   System.out.println(args[i]);
  } //이런식으로 for 문을 실행하면 모든 파일 내용이 출력됩니다...


예전에 저도 이런 적이 있엇는데... 사칙연산을 할때도 마찮가지고 그런식으로


출력되었습니다.


그래서 부호는 InputStream 을 이용하여 입력받았었죠...


참고해주시기바랍니다.


수고하십시오...


------------------------------------------------------------------
원문 출처 : http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10106&docid=2287585

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band