我正在编写一个有两个条件“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);
}
}
答案 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]);