如何为命令行输入设置条件以避免输出中的第一个值

时间:2017-02-18 14:14:29

标签: java arrays sorting

我正在编写一个有两个条件“orgi”和“sort”的程序。 Orgi按插入顺序显示输入。 Sort按插入顺序显示输入,并按字母顺序排序。

在我的代码输出中,还显示if条件“orgi”和“sort”。我该如何解决这个问题?

  

命令行输入是:sort“raam”“ram”“ravi”

public static void main(String[] args)
{
    Scanner keyboard = new Scanner(System.in);
    if(args[0].equals("orgi"))
    {
       System.out.println("Here is a list of the names as read in:");
       for (String s: args)
       {
           System.out.println(s);
       }
           System.out.println("Press Enter to continue ... ");
           keyboard.nextLine();
    }
    if(args[0].equals("sort"))
    {
        System.out.println("Here is the list of the names as read in:"); 
        for(String s: args)
    {
        System.out.println(s);
    }
        System.out.println("Press Enter to continue ... ");
        keyboard.nextLine();
        System.out.println("And here is a sorted list of the names as read in:");
        Arrays.sort(args);
        for (String s: args)System.out.println(s);
    }
}

3 个答案:

答案 0 :(得分:2)

您可以使用System.arraycopy创建所需数据的单独副本以供进一步使用

    String[] args_data = new String[args.length-1];
    // length of args_data will be one less element than args so args.length-1

    System.arraycopy(args, 1, args_data, 0, args.length-1);
    // copy elements into args_data from args , starting from args[1]

    // args_data will contain only data as "raam", "ram", "ravi"

所以使用args_data进行排序和显示,但if条件

除外

e.g

if(args[0].equals("orgi"))
{
   for (String s: args_data )
   {
       System.out.println(s);
   }
}
if(args[0].equals("sort"))
{
    for(String s: args_data )
    {
       System.out.println(s);
    }
    Arrays.sort(args_data );
    for (String s: args_data)System.out.println(s);
}

答案 1 :(得分:1)

替换它:

for (String s: args)

有了这个:

for (int i = 1; i < args.length; i++) {
    System.out.println(args[i]);
}

答案 2 :(得分:0)

您需要在没有第一项的情况下获取其余的参数。我能想到的最简洁的方法是:

Arrays.asList(args).subList(1, args.length);

然后,您需要使用Collections.sort而不是Arrays.sort进行整理。要将其恢复为数组,如果需要,可以使用:

String[] rest = Arrays.asList(args)
        .subList(1, args.length)
        .toArray(new String[args.length - 1]);