2014-10-06 5 views
-5

다음 프로 그램의 흐름을 이해해야합니다. 출력은 무엇이되어야합니까? 이 프로그램을 컴파일하면 "ArrayIndexoutofBound"오류가 발생합니다.Java 프로그램에서 "ArrayIndexoutofBound"오류가 발생하는 이유는 무엇입니까?

public class test { 

    public static void main(String args[]) { 

     Integer intObj=Integer.valueOf(args[args.length-1]); 
     int i = intObj.intValue(); 

     if(args.length > 1) 
     System.out.println(i); 
     if(args.length > 0) 
     System.out.println(i - 1); 
     else 
     System.out.println(i - 2); 
    } 
} 
+3

쉽게 알 수 있습니다. 명령 줄 인수가 없으면 args 배열에 값이 없습니다. – duffymo

+0

[명령 줄 인수] (http://docs.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html)를 입력하고 있습니까? 당신은 아무 것도 없다면 예외를 얻을 것이다. – TNT

+0

오류 및 코드를 기반으로, 적어도 하나의 명령 줄 인수를 제공해야한다고 생각합니다. ArrayIndexOutOfBounds가 실패하면이를 발생시킵니다. 프로그램을 제공 할 때 프로그램이 제대로 실행되어야합니다. – Zibadian

답변

0

"ArrayIndexoutofBound" : 부정한 인덱스를 사용해 배열이 액세스 된 것을 나타 내기 위해서 (때문에) 슬로우됩니다. 인덱스는 음수이거나 배열의 크기보다 크거나 같습니다.

아마도 명령 줄 인수를 전달하지 않았을 것입니다. 그래서 args.Lenght 그래서 여기에 0을 반환

: JVM은 일부 입력 Integer.valueOf 전에 존재하는 경우 (일부 입력 검사를 추가 "ArrayIndexoutofBound"

+0

정수 intObj = Integer.valueOf (args [10-1]); 출력 : 9 오류가있는 arrayIndexOutOfBound. – Raxit

0

을 던져 이유

Integer intObj=Integer.valueOf(args[0-1]); 

지수 부정적인 그게 전부입니다 args [args.length-1]); 그리고 실행을위한 입력 정보를 추가하십시오.

관련 문제