这是我的主要方法,它从命令行获取 3 个整数,然后在我的验证方法中解析。
operatinMethod()
但是我有一种操作方法可以调用其他 3 种方法,但我不知道什么类型的数据以及我必须在原因开关中放入多少只得到一个);并且也在我mainMethod()
的operationMehod()
自称?
如果我不清楚,请告诉我?谢谢!
主要方法:
看来您要执行以下操作
CountPrimes(int) , getFactorial(int) and isLeapYear(int)` ....
现在告诉我你会得到什么值command line arguments
。如果要执行所有三个操作,则通过更改大小写值并给出输入值
performOperations(int value, int caseConstant)
上面的语句将得到两个参数,一个是值,另一个是选择操作的常量。
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 语句中 switch(我想在这里放什么?)例如,当你说 case 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]);
}
}