Как я могу удалить последний "-" в выводе? - PullRequest
0 голосов
/ 02 апреля 2020
    public static void main(String[] args) {
    int[] array = new int[6];

    for (int i = 0; i < array.length; i++) {
        array[i] = (int) (Math.random() * 90) + 1;
    }

    System.out.println("Dein Lottotipp lautet:");
    sort(array);
    printArray(array);
}

public static void sort(int[] array) {

    for (int i = 1; i < array.length; i++) {
        int sortieren = array[i];
        int j = i;
        while (j > 0 && array[j - 1] > sortieren) {
            array[j] = array[j - 1];
            j--;
        }
        array[j] = sortieren;

    }

}

public static void printArray(int[] array) {

    for (int i = 0; i < array.length; i++) {

        if (array[i] < array.length - 1) {
            System.out.print(array[i]);
        } else {
            System.out.print(array[i] + "-");
        }

    }
    System.out.println("");
}

Как я могу удалить последний "-" в выводе, я не лучший java программист; Вывод должен быть 27-28-37-73-75-81, но вывод это 27-28-37-73-75-81-. Мне нужно удалить последний -. Может кто-нибудь отправить мне отредактированный код?

Ответы [ 4 ]

1 голос
/ 02 апреля 2020

String.join

Ответ от npinti правильный и конкретно отвечает на ваш вопрос.

Вот альтернативное решение с использованием String.join особенность. Это использует гораздо меньше кода.

String result = String.join( "-" , List.of( array ) );
1 голос
/ 02 апреля 2020

npinti идентифицировал вашу проблему, и вы должны принять его ответ.

Однако, как учебное упражнение, вы также можете использовать эту общую технику, где вы печатаете разделитель для первых n-1 элементов массива, а затем просто печатаете только последний элемент.

public static void printArray(int[] array) 
{
  if(array.length == 0) return;

  for(int i=0; i<array.length-1; i++) 
  {
    System.out.print(array[i] + "-");
  }
  System.out.println(array[array.length-1]);
}
1 голос
/ 02 апреля 2020

Чтобы не печатать последние -, эта строка: if (array[i] < array.length - 1) { должна стать: if (i === array.length - 1).

В данный момент вы сравниваете содержимое массива с текущим индексом обработка. Сравнение содержимого массива не даст того, что вам нужно, поскольку вас интересует только номер текущей итерации.

0 голосов
/ 04 апреля 2020

Создайте свою строку и перед ее выводом выполните

String s = //Create your string and save it in s
System.out.println(s.substring(0, s.length()-1));

Это обрезает последний символ строки.

...