これは、コマンド ラインから 3 つの整数を取得する私の主な方法であり、検証方法で解析します。
operatinMethod()
ただし、他の3つのメソッドを呼び出す1つの操作メソッドがありますが、原因スイッチに1つしか取得できないデータの種類と数がわかりません); mainMethod()
そして、自分自身を呼び出すために私の中でoperationMehod()
?
よくわからない場合はお知らせください。ありがとう!
主な方法:
次の操作を実行したいようです
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);
}
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;
}
}
コマンド ライン引数は入力を受け取ってString []
、値を必要なデータ型に解析し、関数パラメーターとして渡すことができます。コマンド ライン引数の解析については、こちらを参照してください。
public static void main(String[] args){
}
間違っていたら訂正してください:)
値を評価している変数の名前をこの switch ステートメントに入れます(ここに何を入れると思いますか? ) たとえば、ケース 1 と言うとき、その 1 は変数から来ているはずです。
メソッドを定義するときは、値を評価するパラメーターを渡すだけでよく、その変数を switch ステートメントに渡すことができますか?
このアプローチを試すことができます:
私はグローバル変数の使用を避けています。それらは必要ありません。あなたが常にやろうとしていると思います:
コードは次のようになります。
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]);
}
}