在main方法中调用方法

时间:2012-10-18 04:41:05

标签: java methods

这是我从命令行获取3个整数的主要方法,然后在我的验证方法中解析。

但是我有一个调用3个其他方法的操作方法,但是我不知道我的operatinMethod()因为什么类型的数据以及我需要放入多少数量的方法只有一个);还在我的mainMethod()中调用operationMehod()本身?

如果我不清楚,请告诉我?感谢名单!

主要方法:

5 个答案:

答案 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)

您可以尝试这种方法:

我避免使用全局变量,它们不是必需的,我假设你总是试图这样做:

  • 带有第一个参数的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]);
        }
}