2013-01-17 72 views
0

在Java中我相當新手,但我試圖運行這個簡單的代碼。有人能解釋我應該怎麼做才能使這個代碼有效嗎?簡單的Java代碼錯誤,線程「主」中的異常

public class BinaryGCD { 

public static int gcd(int p, int q) { 
    if (q == 0) return p; 
    if (p == 0) return q; 

    // p and q even 
    if ((p & 1) == 0 && (q & 1) == 0) return gcd(p >> 1, q >> 1) << 1; 

    // p is even, q is odd 
    else if ((p & 1) == 0) return gcd(p >> 1, q); 

    // p is odd, q is even 
    else if ((q & 1) == 0) return gcd(p, q >> 1); 

    // p and q odd, p >= q 
    else if (p >= q) return gcd((p-q) >> 1, q); 

    // p and q odd, p < q 
    else return gcd(p, (q-p) >> 1); 
} 

public static void main(String[] args) { 
    int p = Integer.parseInt(args[0]); 
    int q = Integer.parseInt(args[1]); 
    System.out.println("gcd(" + p + ", " + q + ") = " + gcd(p, q)); 
} 

}

在Eclipse中我得到以下錯誤:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at BinaryGCD.main(BinaryGCD.java:25)

+1

重複的http://stackoverflow.com/questions/373328/invoking-java-main-method-with-parameters-from-eclipse http://stackoverflow.com/questions/7574543/how-to-pass- console-arguments-to-application-in-eclipse – Shashi

回答

0

您沒有使用命令行參數調用程序。使用java BinaryGCD 20 30 你可以使用任何其他數字

+0

謝謝,這對我很有用。但在Eclipse中,我只需將20和30放在那裏。還有一個問題,是否有可能擺脫這些參數?我怎樣才能取代它們? – user1873548

+0

要擺脫這些參數,您可以將值分配給代碼中的變量,或以某種不同的方式接受輸入。讓我們先看看代碼:int p = 20; int q = 30;除此之外,您可以使用一些java swing對話框來接受Web應用程序或Scanner類中的輸入或文本框,以接受來自命令行的用戶輸入。只需搜索關鍵字搖擺對話框,HTML文本框和Scanner類即可開始使用 – Sandeep

0

Can someone explained me what i should do to make this code work?

是的,你必須通過2個參數到您的程序。您沒有傳入任何參數,因此args的長度爲0,這就是您不能訪問第一個和第二個值(索引0和1)的原因。

0

args[0]是命令行的第一個參數。你可能沒有通過任何爭論,所以這是一個問題。在這個程序中你應該有2個參數。

在eclipse中你應該去運行配置並在中添加參數程序參數 textarea。

0
int p = Integer.parseInt(args[0]); 
int q = Integer.parseInt(args[1]); 

更換20 30上面的例子中,你需要兩個參數爲你的程序。

月1日阿根廷:對

第二ARG:Q

嘗試在命令行中運行類:

java BinaryGCD 10 10 
0

此代碼需要兩個參數中傳遞,當你啓動程序從Eclipse內部你不通過他們進來。

該代碼不會爲任何不允許用戶傳遞參數,它不會嘗試發現它並給出一個用戶友好的消息:-)但只是假設參數已通過

Java有一個數組'args',它會自動填充這些參數,所以當它試圖在數組內部查看這些參數時,它會拋出一個ArrayIndexOutOfBoundsException(即您正在查看第一個和第二個元素的數組,但該數組沒有第一個和第二個元素)

上面的答案解釋瞭如何在使用Eclipse時傳遞參數。

相關問題