-2

これは、コマンド ラインから 3 つの整数を取得する私の主な方法であり、検証方法で解析します。

operatinMethod()ただし、他の3つのメソッドを呼び出す1つの操作メソッドがありますが、原因スイッチに1つしか取得できないデータの種類と数がわかりません); mainMethod()そして、自分自身を呼び出すために私の中でoperationMehod()

よくわからない場合はお知らせください。ありがとう!

主な方法:

4

5 に答える 5

2

次の操作を実行したいようです

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

として取得する値を教えてくださいcommand line arguments。3 つの操作をすべて実行する場合は、case 値を変更して入力値を指定します。

  performOperations(int value, int caseConstant) 

上記のステートメントは、2 つの引数を取得します。1 つは値、もう 1 つは操作を選択するための定数です。

 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);
 }
于 2012-10-18T04:58:14.003 に答える
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;

   } 
}
于 2012-10-18T04:43:50.140 に答える
0

コマンド ライン引数は入力を受け取ってString []、値を必要なデータ型に解析し、関数パラメーターとして渡すことができます。コマンド ライン引数の解析については、こちらを参照してください。

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

間違っていたら訂正してください:)

于 2012-10-18T04:46:08.103 に答える
0

値を評価している変数の名前をこの switch ステートメントに入れます(ここに何を入れると思いますか? ) たとえば、ケース 1 と言うとき、その 1 は変数から来ているはずです。

メソッドを定義するときは、値を評価するパラメーターを渡すだけでよく、その変数を switch ステートメントに渡すことができますか?

于 2012-10-18T04:46:49.803 に答える
0

このアプローチを試すことができます:

私はグローバル変数の使用を避けています。それらは必要ありません。あなたが常にやろうとしていると思います:

  • 最初の引数を持つ countPrimes
  • 階乗を秒で計算する
  • 閏年を 3 番目で見つけます

コードは次のようになります。

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]);
        }
}
于 2012-10-18T05:20:31.107 に答える