Java 在void main中使用args的简单对称类(String[]args)

Java 在void main中使用args的简单对称类(String[]args),java,Java,在一个名为Symmetric的类中,使用main()方法。main()方法接受任意数量的命令行参数,其中不包括任何参数。它确定命令行参数是否对称:第一个等于最后一个,第二个等于第二个到最后一个,依此类推。如果参数是对称的,则表达式 All args symmetric 是印刷的。如果发现不对称,则显示如下消息 Not symmetric at arg 1:b and 2:a 打印时,数字对应于参数索引(起始形式0),字母对应于实际参数。 下面是运行示例 > javac Symmetri

在一个名为Symmetric的类中,使用main()方法。main()方法接受任意数量的命令行参数,其中不包括任何参数。它确定命令行参数是否对称:第一个等于最后一个,第二个等于第二个到最后一个,依此类推。如果参数是对称的,则表达式

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--;
     }         
  }
}

我总是有一种强烈的感觉。如何处理没有传入值或只传入一个值的情况

首先进行参数检查:

public class Symmetric{
  public static void main (String[] args) {

     if(args.length == 0) {
         return;
     }

     ...

如果您对代码进行了一点重新排序,以便在使用索引之前总是检查索引,那么您就可以传递这些情况

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");
    }
}
公共类对称{
公共静态void main(字符串[]args){
int i=0;
int j=args.length-1;
布尔sym=真;
而(i你是用Python和C++来标记这个问题吗?还是只是java?我会给你修的。我想你可以重新添加标签,但如果你添加了,请解释原因。编辑:忍者默林:)@jedwards,我已经把他们移除了。
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");
    }
}