2012-10-18 171 views
-2

這是我從命令行獲取3個整數的主要方法,然後在我的驗證方法中進行解析。主要方法中的調用方法

但是我有一個調用其他方法的操作方法,但是我不知道什麼類型的數據以及我必須放在我的operatinMethod()原因開關中的只有一個);也在我的mainMethod()中撥打operationMehod()本身?

請讓我知道如果我不清楚?感謝名單!

主要方法:

+0

與for()循環,什麼也不做什麼? –

+0

只有在所有三個參數驗證成功的情況下,您是否要執行每個操作? – iDroid

+0

你能舉出例子參數和預期的結果嗎? – Uooo

回答

2

看來要執行以下操作

CountPrimes(int) , getFactorial(int) and isLeapYear(int)` .... 

現在告訴我什麼樣的價值觀,你會得到作爲command line arguments。如果你想執行所有三個操作,然後通過修改案值,並給輸入值

performOperations(int value, int caseConstant) 

上面的語句將獲得兩個參數一個是價值,另一種是選擇操作constatnt。

if(validateInput(args[0],args[1],args[2])) { 

    performOperations(Integer.parseInt(args[0]),1); 

    performOperations(Integer.parseInt(args[1]),2); 

    performOperations(Integer.parseInt(args[2]),3); 
} 
+1

謝謝,現在對我有意義!你真棒:) – NilR

0
public static void main(String[] args){ 
    /*whatever here*/ 
    try{ 
    performOperation(Integer.parseInt(args[3])); /*if option is supplied with the arguments*/ 
    }catch(Exception e){ } 
} 
private static void performOperations(int option) { 
    switch(option) { 
    case 1: // count Prime numbers 
     countPrimes(a); 
     break; 
    case 2: // Calculate factorial 
     getFactorial(b); 
     break; 

    case 3: // find Leap year 
     isLeapYear(c); 
     break; 

    } 
} 
+0

我的主要方法如何? – NilR

+0

@Niloo你的validateInput()函數做什麼並返回? –

+0

如果這些條目是數字!在主要方法中,我將它們調用:if(validateInput(args [0],args [1],args [2])){performOperations(**我想在這裏放置** **); – NilR

0

命令行參數臨危輸入作爲String []和值可以被解析到您所需的數據類型,也可以把它作爲功能parameters.See這裏大約Command line args parsing

public static void main(String[] args){ 
} 

糾正我,如果錯了:)

+0

你沒有錯,但我有3個整數,我需要傳遞到operationMethod和我的主要方法!!都必須是同樣! – NilR

0

你把你正在評估的值的變量的名稱在這個開關狀態nt開關(我想放在這裏?) 例如,當你說情況1時,那麼1應該來自你的變量。

當你定義方法時,你只需要傳遞你正在評估的值的參數,然後你可以將該變量傳遞給switch語句?

+0

但switch();只有一個var,我有3個變量fr我的3個整數?!! – NilR

+0

傳遞一個數組到switch語句,然後把這個語句放在for循環中,這樣你可以遍歷所有的變數? – Baahubali

0

你可以用這種方法試試:

我避免使用全局變量,它們是沒有必要的,我認爲你總是試圖做的事:

  • countPrimes的第一個參數
  • 計算階乘與第二
  • ,找到閏年與第三

代碼應該是這樣的:

public class Test { 
// Global Constants 
     final static int MIN_NUMBER = 1; 
     final static int MAX_PRIME = 10000; 
     final static int MAX_FACTORIAL = 12; 
     final static int MAX_LEAPYEAR = 4000; 

     public static void main(String[] args) { 
      if (validInput(args)) { 
       performOperations(args); 
      } 
     } 

     private static boolean validInput(String[] args) { 
      if (args.length == 3 && isInteger(args[0]) && isInteger(args[1]) && isInteger(args[2]) && 
        withinRange(Integer.parseInt(args[0]),MIN_NUMBER, MAX_PRIME) && 
        withinRange(Integer.parseInt(args[1]),MIN_NUMBER, MAX_FACTORIAL) && 
        withinRange(Integer.parseInt(args[2]),MIN_NUMBER, MAX_LEAPYEAR)) 
       return true; 
      return false; 
     } 

     //Check the value within the specified range 
     private static boolean withinRange(int userInput, int min, int max) { 
      boolean isInRange = true; 
      if (userInput < min || userInput > max) { 
       isInRange = false; 
      } 
      return isInRange; 
     } 

     private static boolean isInteger(String value) { 
      try { 
       Integer.parseInt(value); 
      } catch (NumberFormatException nfe) { 
       return false; 
      } 
      return true; 
     } 

     //Perform operations 
     private static void performOperations(String[] args) { 
      countPrimes(args[0]); 
      getFactorial(args[1]); 
      isLeapYear(args[2]); 
     } 
}