在一个名为Symmetric的类中,使用main()方法。 main()方法接受任意数量的命令行参数,包括none。它确定命令行参数是否对称:first等于last,second等于second to last,依此类推。如果参数是对称的,则表达式为
All args symmetric
已打印。如果发现不对称,则会出现
之类的消息Not symmetric at arg 1:b and 2:a
打印,其中数字对应于参数索引(从0开始),字母对应于实际参数。 示例运行如下。
> javac Symmetric.java
> java Symmetric
All args symmetric
> java Symmetric a
All args symmetric
> java Symmetric a a
All args symmetric
> java Symmetric a b
Not symmetric at arg 0:a and 1:b
> java Symmetric a b a
All args symmetric
> java Symmetric a b a c
Not symmetric at arg 0:a and 3:c
> java Symmetric a b a a
Not symmetric at arg 1:b and 2:a
> java Symmetric c a b a b a c
All args symmetric
> java Symmetric c a b d b a c
All args symmetric
> java Symmetric c a b d r a c
Not symmetric at arg 2:b and 4:r
这是我的代码:
public class Symmetric{
public static void main (String[] args) {
int i =0;
int j=args.length-1;
if (args[i].equals(args[j])==false){
System.out.println ("Not symmetric at arg "+i+":"+args[i]+" and "+j+":"+args[j]);
}
while(args[i].equals(args[j]) && i<=j) {
if (i==j || i==j-1 || i==j-2){
System.out.println ("All args symmetric");
// System.exit(1);
}
i++;
j--;
}
}
}
除了前两个,我可以通过上面的所有例子。当我进入
java Symmetric
java Symmetric a
我总是得到ArrayIndexOutofBoundsException。我如何处理没有传入任何值或仅传递一个值的情况?
答案 0 :(得分:1)
首先进行参数检查:
public class Symmetric{
public static void main (String[] args) {
if(args.length == 0) {
return;
}
...
答案 1 :(得分:1)
如果您稍微重新排序代码,以便在使用之前始终检查索引,那么您可以通过这些情况。
public class Symmetric{
public static void main (String[] args) {
int i =0;
int j=args.length-1;
boolean sym =true;
while(i < j) {
if (!args[i].equals(args[j])){
System.out.println("Not symmetric at arg "+i+":"+args[i]+" and "+j+":"+args[j]);
sym = false;
break;
}
i++;
j--;
}
if (sym) System.out.println ("All args symmetric");
}
}