无法在控制台和eclipse中使用参数执行java程序?

时间:2016-03-10 10:37:01

标签: java

这是我在java上的第一次尝试,我在运行它时遇到了一些问题:

以下是代码:

public class Assignment1 {
    public static void main(String args[]) {
        int c = Integer.parseInt(args[1]);
        if (c > args[0].length()) {
            System.out.println("the index" + args[1] + "is out of range !");
        } else {
            System.out.println("The character is" + args[0].charAt(c - 1) + " !");
        }
    }
}

编译时出错(线程中的异常" main" java.lang.ArrayIndexOutOfBoundsException:1     在Assignment1.main(Assignment1.java:3) 但是认为这只是因为我没有输入任何东西,并且当试图在cmd中执行它时,c:\ blah blah ... \ java Assignment1.java 1234 5"并得到之前提到的错误...

知道代码有什么问题吗?我的设置?我? 感谢。

2 个答案:

答案 0 :(得分:2)

问题出在args[0].charAt(c-1),因为c-14

您的args[0]1234,因此charAt(4)超出范围。

  • charAt(0)返回1
  • charAt(1)返回2
  • charAt(2)返回3
  • charAt(3)返回4

答案 1 :(得分:1)

您正在获取ArrayIndexOutOfBoundsException,因为您正在访问命令行参数而不检查实际上是否有任何参数。

您需要检查用户是否提供了正确的参数,如果没有,请打印如何调用可执行文件的消息,如下所示

public class Assignment1 {
    public static void main(String args[]) {
        if (args.length == 2) {
            int c = Integer.parseInt(args[1]);
            if (c > args[0].length()) {
                System.out.println("the index " + args[1] + " is out of range !");
            } else {
                System.out.println("The character is " + args[0].charAt(c - 1) + " !");
            }
        }
        else {
            System.out.println("Usage: java Assignment1 <argument1> <argument2>\n E-g java Assignment1 abcd 4");
        }
    }
}

调试时,可以将命令行参数传递给应用程序,如下所示:

在命令行中,您必须运行

javac Assignment1.java 

第一。然后你必须执行

java Assignment1 <argument1> <argument2>

或者在Eclipse IDE中,打开“运行配置”窗口,并在“程序参数”框中提供两个参数。然后运行它。这将有效

enter image description here