2016-03-10 31 views
-4

这是我第一次尝试在Java和我在运行它一个小问题:无法在console和eclipse中使用参数执行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) + " !"); 
     } 
    } 
} 

我得到一个错误,编译它(例外在线程“主要”的Java。 lang.ArrayIndexOutOfBoundsException:1 at Assignment1.main(Assignment1.java:3) 但认为这只是因为我没有输入任何内容,而当试图在cmd中执行它时,“c:\ blah blah ... \ java Assignment1.java 1234 5“,并得到前面提到的错误...

任何想法代码有什么问题?我的设置?我? 谢谢。

+3

* “我得到一个错误,它编译” *我非常怀疑。发布_how_你试图编译你的程序,请。 – Tom

+0

我按了Ctrl + F11 – user114138

+0

而且在哪里?你使用哪个IDE? – Tom

回答

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

+0

@Thanga非常感谢,不知道。 虽然仍然有cmd错误 – user114138

+0

@ user114138在命令行中,您必须先运行'javac Assignment1.java'。然后你必须执行'java Assignment1' – Thanga

+0

工作就像一个魅力。谢谢!! – user114138

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
+0

修好了,谢谢。任何想法为什么CMD仍然给我一个错误? – user114138

相关问题