2017-02-18 7 views
1

Я пишу программу, имеющую два условия: «orgi» и «sort». Orgi отображает входы в порядке вставки. Сортировка отображает входы в порядке вставки, а также сортируется в алфавитном порядке.как установить условия ввода командной строки, чтобы избежать первого значения на выходе

Здесь, на выходе моего кода, отображаются также условия «orgi» и «sort». Как я могу исправить эту проблему?

ввода команды строка: вроде "RAAM" "баран" "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

Программа работает нормально, единственная проблема заключается в том, что вы рассматриваете первый аргумент, который вы использовали для условной проверки в качестве ввода для заказа. – BeginnersSake

ответ

1

Заменить это:

for (String s: args) 

с этим:

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

Это должно быть 'args.length' –

+0

К сожалению, спасибо David! –

0

Вам нужно взять оставшуюся часть аргументов без t он первый пункт. Самый лаконичный способ, которым я могу думать, чтобы сделать это:

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]); 
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 состояния

например

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

Спасибо, что это сработало –

+0

@ K.Ji Я рад, что могу помочь, счастливое кодирование –