2015-11-15 2 views
0

Вот метод сортировки целочисленного массива. Как удалить последний разделитель из вывода?Удалить последний разделитель из инструкции печати

public void Sort(int[] sort) { 
     for (int a:sort) { 
      System.out.print(a+ ", "); 
     } 
    } 

Выход

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 

Желаемая Выход

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 

ответ

7

Если вы используете Java 8, очень чистое решение использует новый класс StringJoiner. Этот класс был разработан для объединения Strings вместе с пользовательским разделителем и, возможно, с префиксом/суффиксом. С этим классом вам не нужно беспокоиться об удалении последнего разделителя, как в своем фрагменте.

public void sort(int[] sort) { 
    StringJoiner sj = new StringJoiner(","); 
    for (int a : sort) { 
     sj.add(String.valueOf(a)); 
    } 
    System.out.println(sj.toString()); 
} 

Вы также можете опустить петлю for и использовать потоки вместо:

String str = Arrays.stream(sort).mapToObj(String::valueOf).collect(joining(",")); 
+0

Лучший ответ. Всегда учитесь у вас. Благодарю. –

0
public void Sort(int[] sort) { 
    int i = 1; 
    String str = Arrays.toString(sort); 

    str = str.substring(i,str.length()-1); 
    System.out.println(str); 
} 
+0

Мне это нравится, но как я могу отформатировать это? то есть. удалите скобки – girthquake

2

Пара вариантов:

public void Sort(int[] sort) { 
    for (int i = 0; i < sort.length; i++) { 
    System.out.print(sort[i]); 
    if (i < sort.length - 1) { 
     // not the last element. Add separator 
     System.out.print(" ,"); 
    } 
    } 
} 

Другой способ :

public void Sort(int[] sort) { 
    String output = Arrays.toString(sort); 
    System.out.println(Arrays.toString(output).substring(1, output.length-1)); 
} 
+0

Первый вариант замечательный. Со вторым вариантом я получаю ошибку: 'Метод toString (long []) в массиве типа не применим для аргументов (String)', также не должен ли он быть 'output.length()' в конце? – girthquake

0

Вы можете использовать StringBuilder следующим образом:

StringBuilder sb =new StringBuilder(); 
    int[] sort = {1,2,3,4,5,7,89,4,9,6,11,23,178,29}; 
    for(int i : sort) sb.append(i+", "); 
    if(sb.length()>2)  sb.delete(sb.length()-2, sb.length()); 
    System.out.println(sb.toString()); 

EDIT: Это не сортировочный алгоритм. Это просто пример того, как вы можете представить его без последней запятой.

+1

Возможно, лучше не добавлять запятую в первую очередь, а не добавлять ее, а затем удалять. – bfontaine

+0

@ bfontaine действительно, не говоря, что это лучший способ. Это просто альтернатива. –

0

может легко сделать, как показано ниже:

for (int i = 0; i < sort.length; i++) { 
     System.out.print(i < sort.length-1 ?sort[i]+", " : sort[i]+""); 
    } 
1

Я думаю, что это может решить эту проблему просто попробовать.

public static void sort(int[] sort) { 
    for (int a:sort) { 
     if(a==sort[sort.length-1]) 
      System.out.println(a); 
     else 
      System.out.print(a+ ", "); 
    } 
Смежные вопросы