2015-09-20 76 views
-1

我使用if语句为用户提供了自定义错误消息args.length == 0。但是,当没有参数传递时,而不是打印我的自定义消息,我得到一个出界的错误。超出范围错误而不是自定义消息

String w1 = args[0]; 
int n1 = Integer.parseInt(args[1]); 
    for(int x = 0; x < n1; x++) { 
    System.out.println(w1); 
    } 

String w2 = args[2]; 
int n2 = Integer.parseInt(args[3]); 
    for(int b = 0; b < n2; b++){ 
    System.out.println(w2); 
    } 

String w3 = args[4]; 
int n3 = Integer.parseInt(args[5]); 
    for(int c = 0; c < n3; c++) { 
    System.out.println(w3); 
    } 

    if(args.length == 0){ 
    System.out.println("Error: No user input."); 
    return; 
    } 

    } 
+0

哪里是代码? –

+0

试图上传代码片段,但我没有足够的经验点 – Matt

+0

图片??在这里粘贴代码。 –

回答

0

您的代码:

if(args.length == 0){ 
    System.out.println("Error: No user input."); 
    return; 
} 

应该在一开始,因为当有args[]没有元素和访问他们像这样:

String w1 = args[0]; 
int n1 = Integer.parseInt(args[1]); 
    for(int x = 0; x < n1; x++) { 
    System.out.println(w1); 
} 

你得到了ArrayIndexOutOfBoundsExeption。简单地说,检查args.length() == 0应该是在开始

0

显示代码后修改。

Java: Check if command line arguments are null

我建议经常检查,如果((参数== NULL)||(args.length == 0)),或者如果((参数!= NULL)& &(args.length> 0 ))取决于你的需要。

if((args == null) || (args.length == 0)) 
 
{ 
 
    System.out.println("Error: No user input."); 
 
    return; 
 
} 
 

 
if (args.length == 1) { 
 
    String w1 = args[0]; 
 
    int n1 = Integer.parseInt(args[1]); 
 
    for(int x = 0; x < n1; x++) { 
 
    System.out.println(w1); 
 
    } 
 
} 
 

 
if (args.length == 3) { 
 
    String w2 = args[2]; 
 
    int n2 = Integer.parseInt(args[3]); 
 
    for(int b = 0; b < n2; b++){ 
 
    System.out.println(w2); 
 
    } 
 
} 
 

 
if (args.length == 5) { 
 
    String w3 = args[4]; 
 
    int n3 = Integer.parseInt(args[5]); 
 
    for(int c = 0; c < n3; c++) { 
 
    System.out.println(w3); 
 
    } 
 
} 
 

+0

添加空检入,未通过输入时收到同样的错误 – Matt

+0

现在,我看到您的代码,您正在检查空的参数。 – Enkode

+0

这是有效的。谢谢。 – Matt