2017-09-23 17 views
-2

線程「主」java.lang.ArrayIndexOutOfBoundsException中的異常:0我寫了一個簡單的計算器的代碼,我得到這個錯誤!請有人幫助我!在Calculator.main(Calculator.java:25)

public class Calculator { 

    public static void main (String[] args) { 

    int num1 = Integer.parseInt(args[0]); 
    int num2 = Integer.parseInt(args[1]); 
    int sum = num1 + num2; 
    int sub = num1 - num2; 
    int prod = num1 * num2; 
    int quot = num1/num2; 
    int rem = num1 % num2; 

    // print the other variables, sub, prod, quot, rem;  
    System.out.println(num1 + " + " + num2 + " = " + sum);  
    System.out.println(num1 + " - " + num2 + " = " + sub);  
    System.out.println(num1 + " * " + num2 + " = " + prod);  
    System.out.println(num1 + "/" + num2 + " = " + quot);  
    System.out.println(num1 + " % " + num2 + " = " + rem); 
    } 
} 
+0

'的Java = JavaScript';!) –

+1

您是如何調用'main'? –

+1

我建議將if(args.length!= 2)新增IllegalArgumentException(「Expected 2 arguments,but got:」+ Arrays.toString(args))''添加到main方法的開頭。這不會解決你的問題,但會給你一個更好的錯誤信息;-)。 – yankee

回答

1

你需要確保當應用程序啓動時,它是通過因爲你的代碼假定arguments將在位置01一個元素,可以被解析爲數字兩個字符串。如果你不通過兩個參數,那麼你會得到你的錯誤。

例如,如果調用從程序中main

Calculator.main(new String[] {"10","20"}); 

或者,如果從命令行調用Calculator.class

java Calculator 10 20 
+0

你通常不直接調用main。它通過命令行 –

+0

@ cricket_007我知道,我只是試圖強化這一點,並在那個時候添加了命令行示例。 –

+0

但是,如果我這樣做,那麼我得到更多的錯誤? –

0

由於異常指示,你的程序遇到一個數組出當它嘗試訪問索引爲0的數組時,會出現邊界異常。在上面的代碼中,索引爲0的數組中的唯一位置在以下行中:

int num1 = Integer.parseInt(args[0]);

換句話說,您的程序找不到args數組的第0個索引,這意味着您沒有將任何參數傳遞給您的程序。事實上,你的程序看起來像兩個參數。運行程序通過以下方式,如果您使用命令行

java Calculator 100 200