2017-02-12 2 views
-1

Wie dieser Fehler behebenFehler: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2

Wenn ich versuche, dies zu laufen Programm bekomme ich diese Fehlermeldung. Wirklich in diesem Programm

public static void main(String[] args) 
{ 
    String firstLine = (args[0]); 
    String secondLine = (args[1]); 
    String thirdLine = (args[2]); 
    int LinesBefore = Integer.parseInt(args[3]); 
    int LinesAfter = Integer.parseInt(args[4]); 
    int Spaces = Integer.parseInt(args[5]); 
    if (args.length == 1 || args.length == 2 || args.length == 5 || args.length > 6) 
    { 
     Open open = new Open(); 
     System.out.println("Error: Incorrect numbers of parameter."); 
     System.out.println("Program now terminating."); 
    } 
    else if(args.length == 3) 
    { 
     Open open = new Open(firstLine,secondLine,thirdLine); 
     open.display(); 
    } 
    else if(args.length == 4) 
    { 
     Open open= new Open(firstLine,secondLine,thirdLine,LinesBefore); 
     open.display(); 
    } 
    else if(args.length == 6) 
    { 
     Open open = new Open(firstLine,secondLine,thirdLine,LinesBefore,LinesAfter,Spaces); 
     open.display();  } 
    else if(args.length == 0) 
    { 
     Open open = new Open(); 
     open.display();  } 
} 
+0

Sie haben die Länge überprüft, nachdem Sie versucht haben, auf ein Element zuzugreifen. –

Antwort

1

Sie können nur args[0] wenn args.length > 0 verwenden und so weiter.

Ich würde vorschlagen, den Zugriff auf args innerhalb der Bedingung statt vor args.length überprüfen. Z.B.

else if(args.length == 3) 
{ 
    String firstLine = (args[0]); 
    String secondLine = (args[1]); 
    String thirdLine = (args[2]); 

    Open open = new Open(firstLine,secondLine,thirdLine); 
    open.display(); 
} 
+0

danke für die Hilfe –

0
String firstLine = (args[0]); 
String secondLine = (args[1]); 
String thirdLine = (args[2]); 
int LinesBefore = Integer.parseInt(args[3]); 
int LinesAfter = Integer.parseInt(args[4]); 
int Spaces = Integer.parseInt(args[5]); 

Dafür stecken args.length arbeiten müssen Sie alle der Array-Indizes bis zu 5 eine solche Ausnahme müssen Sie zuerst Um zu vermeiden, keinen Zugriff auf mindestens 6, anders sein überprüfen args.length und dann zugreifen nie Indizes größer als array.length - 1

1

Ihr Fehler ist hier:

String firstLine = (args[0]); 
String secondLine = (args[1]); 
String thirdLine = (args[2]); 
int LinesBefore = Integer.parseInt(args[3]); 
int LinesAfter = Integer.parseInt(args[4]); 
int Spaces = Integer.parseInt(args[5]); 

Sie versuchen auf ein Element im Array zuzugreifen, das möglicherweise nicht existiert, abhängig davon, wie viele Parameter Sie bei der Ausführung angegeben haben.

Eine der möglichen Lösungen:

public static void main(String[] args) 
{ 
    if (args.length == 1 || args.length == 2 || args.length == 5 || args.length > 6) 
    { 
     Open open = new Open(); 
     System.out.println("Error: Incorrect numbers of parameter."); 
     System.out.println("Program now terminating."); 
    } 
    else if(args.length == 3) 
    { 
     Open open = new Open(args[0],args[1],args[2]); 
     open.display(); 
    } 
    else if(args.length == 4) 
    { 
     Open open= new Open(args[0],args[1],args[2],Integer.parseInt(args[3])); 
     open.display(); 
    } 
    else if(args.length == 6) 
    { 
     Open open = new Open(args[0],args[1],args[2],Integer.parseInt(args[3]),Integer.parseInt(args[4]),Integer.parseInt(args[5])); 
     open.display();  } 
    else if(args.length == 0) 
    { 
     Open open = new Open(); 
     open.display();  } 
} 
+0

Ich bekomme immer noch den gleichen Fehler –

+1

Die Elemente eines Arrays werden jetzt nur zugegriffen, wenn sie vorhanden sind. Sie können technisch nicht den gleichen Fehler erhalten. Hast du genau das versucht, was ich geschrieben habe? – sudo

+0

Ja endlich ist es fertig danke –

Verwandte Themen