2016-03-10 30 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

相關問題