2014-01-26 58 views
0

我正在寫一個擲骰子程序,它有兩個參數傳遞給main,骰子有多少個邊以及你想拋出的次數。如果傳遞少於或多於兩個參數,我想拋出異常。我會如何去做這件事?我找到this。 但我不確定如何使用它?當然,我必須以某種方式指定在可以引發異常之前預期的參數數量?當太多/少數參數傳遞給main時拋出一個異常

回答

2

試試這個:

public class Dice { 
    public static void main(String... args) { 

    // First, ensure there are 2 args 
    if (args.length != 2) { 
     throw new IllegalArgumentException("Exactly 2 parameters required !"); 
    } 

    int firstArgInt; 
    int secondArgInt; 

    // Verify all args are integers 
    try { 
     firstArg = Integer.parseIng(args[0]); 
    } catch (NumberFormatException nbfe) { 
     // 2 possible solutions : throw an exception, or assign a default value 
     // - throw new IllegalArgumentException("First arg must be an integer"); 
     // - firstArg = 42; 
    } 
    try { 
     secondArg = Integer.parseIng(args[1]); 
    } catch (NumberFormatException nbfe) { 
     // Same as above 
    } 

    // Etc. 

    } 
} 
+0

謝謝你,我會怎麼做但是如果我知道要檢查論點號碼?我想拋出一個不同的異常來捕獲和處理,但是如果我的catch塊捕獲IllegalArgumentException,它將不知道如何處理,因爲它的異常類型相同? –

+0

我編輯了我的答案以添加參數類型轉換。如果參數不是int,則可能需要爲其分配默認值而不是拋出異常。 –

+0

我嘗試添加其他異常以同樣的方式爲您創建的第一個,它開始拋出了以下錯誤:無法找到符號 拋出新IncorrectInputException ^ 我已經包括了我的下面 代碼嘗試 \t \t \t { \t \t \t \t noOfFaces = Integer.parseInt(args [0]); \t \t \t \t \t如果(noOfFaces <2) \t \t \t \t \t { \t \t \t \t \t \t擲新IncorrectInputException(); \t \t \t \t \t} \t \t \t} \t \t \t趕上(IncorrectInputException lessThan2) \t \t \t { \t \t \t \t的System.out.println( 「你必須通過大於2的整數」); \t \t \t \t System.exit(1); \t \t \t} –

相關問題