这是我从命令行获取3个整数的主要方法,然后在我的验证方法中解析。
但是我有一个调用3个其他方法的操作方法,但是我不知道我的operatinMethod()
因为什么类型的数据以及我需要放入多少数量的方法只有一个);还在我的mainMethod()
中调用operationMehod()
本身?
如果我不清楚,请告诉我?感谢名单!
主要方法:
答案 0 :(得分: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 :(得分: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;
}
}
答案 2 :(得分:0)
命令行参数接收输入为String []
,并且可以将值解析为所需的数据类型,并将其作为函数参数传递。请参阅此处关于Command line args parsing
public static void main(String[] args){
}
如果我错了,请纠正我。
答案 3 :(得分:0)
你在这个switch语句开关中输入你正在评估值的变量的名称(我想放在这里?) 对于例如当你说案例1时,那1应该来自你的变量。
当您定义方法时,您只需要传递您正在评估其值的参数,然后您可以将该变量传递给switch语句?
答案 4 :(得分:0)
您可以尝试这种方法:
我避免使用全局变量,它们不是必需的,我假设你总是试图这样做:
代码应该是这样的:
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]);
}
}