1

当我尝试编译这个简单的程序时出现上述错误:

/* @author 
 * This program expects two command-line arguments
 * -- a person's first name and last name.
 * For example:
 * C:\Mywork> java Greetin Annabel Lee
 */
public class Greetin
{
    public static void main(String[] args)
    {
        String firstName = args[0];
        String lastName = args[1];
        System.out.println("Hello, " + firstName + " " + lastName);
        System.out.println("Congratulations on your second program!");
    }
}

通过查看其他问题,我了解错误与数字有关args == 0并且0大于数字,但我不知道如何解决这种情况下的问题。有什么方法可以将错误也识别为由void?

4

2 回答 2

2

我的猜测是您的程序没有提供任何参数。好的约定是确保用户输入预期的 args 数量,否则死亡。在你的情况下:

if( args.length != 2 ){
    System.out.println("usage: Greetin <firstName> <lastName>");
}
else{
    String firstName = args[0];
    String lastName = args[1];
    System.out.println("Hello, " + firstName + " " + lastName);
    System.out.println("Congratulations on your second program!");
}

此外,请确保您java Greetin Annabel Lee在编译以正确设置参数后键入:。

于 2012-08-28T02:44:06.260 回答
1

您可能没有将两个命令行参数传递给您的程序。该错误告诉您该数组args没有任何元素,因为索引0超出了有效范围。确保在运行程序时传递参数。

java Greetin Annabel Lee
于 2012-08-28T02:43:45.713 回答