Java 来自命令行参数的控制程序

Java 来自命令行参数的控制程序,java,command-line,Java,Command Line,如何在程序中选择使用命令行参数运行的方法?例如,如果我希望我的程序处理一个名为Moon.jpg的图像,那么如何使它工作,以便命令行中的-S Moon.jpg调用Scale方法?或者-HI Moon.jpg将水平翻转图像并将其反转?我已经编写了一些方法,当我正常运行程序时,这些方法会起作用。 这应该会有所帮助。下面是如何使用它: 这应该会有所帮助。下面是如何使用它: 您可能需要为每个目的编写不同的方法,并根据命令输入设置if/else条件 您可能需要为每个目的编写不同的方法,并根据命令输入设置i

如何在程序中选择使用命令行参数运行的方法?例如,如果我希望我的程序处理一个名为Moon.jpg的图像,那么如何使它工作,以便命令行中的-S Moon.jpg调用Scale方法?或者-HI Moon.jpg将水平翻转图像并将其反转?我已经编写了一些方法,当我正常运行程序时,这些方法会起作用。

这应该会有所帮助。下面是如何使用它:

这应该会有所帮助。下面是如何使用它:

您可能需要为每个目的编写不同的方法,并根据命令输入设置if/else条件

您可能需要为每个目的编写不同的方法,并根据命令输入设置if/else条件

您可以使用如下函数解析参数:

private void parseArguments(String[] args)
  {
    int i = 0;
    String curArg;

    while (i < args.length && args[i].startsWith("-"))
    {
      curArg = args[i++];

      if ("-S".compareTo(curArg) == 0)
      {
        if (i < args.length)
        {
            String image = args[i++];
            processImage()
        }
        else
        {
          // ERROR
        }
      }
    } 
  }
private void参数(字符串[]参数)
{
int i=0;
弦管;
while(i

main方法应始终具有字符串[]args,其中包含在空格字符上拆分的参数。还有很多库可用于解析命令行参数。此方法与Apaches CLI库使用的方法非常相似(当然,该库附带了更多的方法,但解析器使用此逻辑)。

您可以使用如下函数解析参数:

private void parseArguments(String[] args)
  {
    int i = 0;
    String curArg;

    while (i < args.length && args[i].startsWith("-"))
    {
      curArg = args[i++];

      if ("-S".compareTo(curArg) == 0)
      {
        if (i < args.length)
        {
            String image = args[i++];
            processImage()
        }
        else
        {
          // ERROR
        }
      }
    } 
  }
private void参数(字符串[]参数)
{
int i=0;
弦管;
while(i

main方法应始终具有字符串[]args,其中包含在空格字符上拆分的参数。还有很多库可用于解析命令行参数。此方法与Apaches CLI库使用的方法非常相似(当然,该库附带了更多的方法,但解析器使用此逻辑)。

为什么不读取传递的参数并读取后续值来执行所需操作 即

java程序-a1某物-a2某物

在你的节目里

public static void main(String[] args){
 for(int i=0;i<args.length;i++){
  switch(args[i]){//you can use if-else to deal with string...
  case "-a1":read args[i+1] to get value to do somethng
  case "-a2": read args[i+1] to get value to do something else
 }
}
publicstaticvoidmain(字符串[]args){

对于(inti=0;i为什么不读取传递的参数并读取后续值来执行所需的操作 即

java程序-a1某物-a2某物

在你的节目里

public static void main(String[] args){
 for(int i=0;i<args.length;i++){
  switch(args[i]){//you can use if-else to deal with string...
  case "-a1":read args[i+1] to get value to do somethng
  case "-a2": read args[i+1] to get value to do something else
 }
}
publicstaticvoidmain(字符串[]args){

对于(int i=0;i是否希望调用Java中的程序,就像在中的命令行中运行它们一样,以检索输出?是否希望调用Java中的程序,就像在中的命令行中运行它们一样,以检索输出?这是一个糟糕的答案。虽然链接到的库可能会有所帮助,但不清楚用户应该以何种方式进行体验ct使用它。此外,在这个网站上,最好的做法是提供一个答案,而不仅仅是“一个链接”。感谢这个链接,如果我的理解是正确的,它只是映射字符串,而不是方法调用(或)调用。@ThinkStiple-正确,然后将字符串映射到相关的方法调用。这是一个糟糕的答案。虽然您链接到的库可能会有所帮助,但不清楚用户应该以何种方式使用它。此外,本网站的最佳做法是为答案提供“仅一个链接”以外的内容。如果我理解的话,感谢您的链接ding是正确的,它只是映射字符串而不是方法调用(或)调用。@ThinkStiple-correct,然后将字符串映射到相关的方法调用。@KimberleeGraham Knight,然后您应该单击此答案旁边的复选标记。@KimberleeGraham Knight,然后您应该单击此答案旁边的复选标记。