2017-03-10 3 views
-4

다음은 문제 설명입니다.왜 Integer i = Integer.valueOf (args [0])가 실패 했습니까? args [0]은 문자열입니다

ocjp 테스트를 준비하면서 문제가 발생했는데 문제가 무엇인지 알 수 없습니다. 는 I가 int 동안 args[0]이 문자열이기 때문에

package test; 
class Test005{ 
    public static void main(String[] args){ 

     //Integer i = args[0];//cannot convert string to Integer 
     Integer I = Integer.valueOf(args[0]); // Error ArrayOutOfBoundsException :0 
     int j = 12; 
     System.out.println(j == i); 

    } 
} 

Integer I = args[0]은 잘못된 것입니다; 그러나 두 번째 Ineteger I = Integer.valueOf(args[0])은 부드럽게 준수하지만 JVM에서 오류가 발생하며 그 이유를 알 수 없습니다.

+0

args [0]'에 무엇이 있습니까? 'number' 또는'NaN'? –

+2

javadoc을 읽으십시오! – Jens

+1

코드에서 언급 한 것과 같은 ArrayOutOfBoundsException을 얻은 경우에는 인수를 사용하여 programm를 시작하지 마십시오. – Markus

답변

0

실행하려면 args [0]에 할당 될 프로그램을 실행하는 동안 인수를 전달해야합니다. 그러면 프로그램이 정상적으로 작동합니다. Eclipse와 같은 IDE를 사용하는 경우 인수 탭을 통해 인수를 전달할 수 있습니다. 아래 링크 확인은 이클립스 IDE에 인수를 전달할 수있는 방법을 볼 수 있습니다 : args 의미하는 비어 당신이 프로그램을 실행할 때 인수를 전달하지 않았기 때문에 http://www.cs.colostate.edu/helpdocs/eclipseCommLineArgs.html

+0

@ scary 나는 지금 코멘트를 게시 할 수 없으므로, 나는 당신이 그것을 downvoted하기 전에 내가 수정 한 대답을 주었다. –

+0

감사합니다. url이 정말 도움이됩니다. 이제는 이클립스에서 명령 행을 배울 것입니다. –

0

JVM은 ArrayOutOfBoundsException가 발생합니다. 이 명령을 실행 해보십시오 : java Test005 45. 그런데 args [0]은 숫자 형식 ("ab", "a1")이 아니거나 args가 비어있는 경우와 같이 더 많은 경우를 확인해야한다고 생각합니다.

0

는 안보되지 않은 큰 문제는

Integer I = Integer.valueOf(args[0]); 

이 경우 경우에만 작동한다는 사실이다 :

  • 인수 배열 모자 적어도 하나의 원소

  • 인수 [0]는 하늘의 배열의 첫번째 요소를 얻기 위해 노력하고있다, 그래서 당신의 fisrt 조건이 충족되지 않습니다 정수 개체 귀하의 경우

로 변환 할 수있는 일, therfore 예외입니다

당신은 당신이 어떻게 테스트했는지, 다른 클래스/그 방법에서 그 메소드를 호출하고 있는지, 아니면 터미널에서 앱을 시작하고 있는지/어떻게 언급했는지 언급하지 않았다 ...