一个简单的程序,从命令行获取 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);
}
}
}
我尝试过:
args[].length
int len = args[].length
我对Java没有那么丰富的经验,所以我不知道还有其他方法可以尝试。
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
类型。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
。