2017-02-12 140 views
-1

如何修复这个错误错误:异常线程 “main” java.lang.ArrayIndexOutOfBoundsException:2

异常线程 “main” java.lang.ArrayIndexOutOfBoundsException:2

当我尝试运行此程序我得到这个错误信息。 真的卡在这个节目

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

您在尝试访问元素后检查了长度。 –

回答

1

只能args[0]如果args.length > 0等使用。

我会建议移动访问args内的条件,而不是之前args.length检查。例如。

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

谢谢你的帮助 –

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]); 

对于工作args.length必须至少6,否则无法访问所有的数组索引的多达5为了避免这样的异常必须先检查args.length然后永远不能访问指数大于array.length - 1

1

你的错误是在这里:

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]); 

您试图访问数组中可能不存在的元素,具体取决于您在运行时指定了多少个参数。

一个可能的解决方案:

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

我仍然收到相同的错误 –

+1

现在只有存在数组元素时才访问数组元素。你在技术上不能得到相同的错误。你有没有尝试过我写的东西? – sudo

+0

是的,终于完成了谢谢你 –

相关问题