在 CLI 中传递参数时如何检查参数数量?

问题描述 投票:0回答:1

一个简单的程序,从命令行获取 2 个参数,如果它们是 2,它只是将它们相乘,否则抛出我的自定义异常。

import java.util.*;

class MyException extends Exception
{
    public String toString()
    {
        return "Something Went Wrong :(";
    }
}

class ExceptionCLI
{
    public static void main(String args[])
    {
        int A = Integer.parseInt(args[0]);
        int B = Integer.parseInt(args[1]);
        
        if() //** Missing condition, what should I write? args[].length < 2 doesn't work**
        {
            try
            {
                throw new MyException();
            }
            catch(Exception e)
            {
                System.out.println(e.toString());
            }
        }
        else
        {
            System.out.println("Result: "+A*B);
        }
    }
}

我尝试过:

  1. args[].length
  2. int len = args[].length

我对Java没有那么丰富的经验,所以我不知道还有其他方法可以尝试。

java command-line-interface
1个回答
2
投票

length
属性的访问方式如下:
args.length

使用示例:

if( args.length == 2 ) { … } else { … }

问题不在于 CLI,而在于理解 Java 中的数组。

此示例的一些数组基础知识:

  • String [] args
    将变量
    args
    声明为
    String
    的数组。
  • String args []
    是将变量
    args
    声明为
    String
    数组的另一种方法。
  • 所以,
    args
    是一个变量。它的类型是
    String []
    ,即
    String
    的数组。
  • args[n]
    是该数组的一个元素,即在本例中是一个单独的
    String
    • n
      可以是常量、变量或表达式。
    • n
      必须可解析为
      int
      类型。
  • 在Java中,数组是引用类型。它具有
    Object
    的属性和方法。此外,它还有一个
    length
    属性。
  • args
    是本例中引用的名称。
  • length
    属性的访问方式如下:
    args.length
    • 示例:
      if (args.length > 100) { System.out.println ("foo"); }
  • args[]
    本身无法编译。
    args[].foo
    也不会,其中
    foo
    是属性。
    args[].foo()
    也不会,其中
    foo
    是一个方法。同样,变量的名称是
    args
    ,而不是
    args[]

其他评论:

  • 在尝试解析元素之前检查
    args
    的长度。可能是 args
     是空的。也就是说,
    args.length
     可能为零。如果是这样的话,
    args[0]
    就不存在了。
  • 如果在解析元素之前不检查长度,则应该做好
  • ArrayIndexOutOfBoundsException
    的准备。
  • 如果元素存在,但不代表整数,则尝试解析可能会抛出
  • NumberFormatException
© www.soinside.com 2019 - 2024. All rights reserved.