Member 13458860 Ответов: 2

Как распечатать список без запятой в конце?


Вывод моих кодов должен заканчиваться последним элементом, без запятой или пробела в конце. У меня возникли проблемы, выяснить, как остановить его от происходящего.

Что я уже пробовал:

import java.util.Scanner;

public class PrintWithComma {
   public static void main (String [] args) {
      final int NUM_VALS = 4;
      int[] hourlyTemp = new int[NUM_VALS];
      int i;

      hourlyTemp[0] = 90;
      hourlyTemp[1] = 92;
      hourlyTemp[2] = 94;
      hourlyTemp[3] = 95;

      
      for(i = 0; i < NUM_VALS; i++)
      {
         
         System.out.print(hourlyTemp[i] + ", ");
         
        // if (i <= NUM_VALS)
        // {
          //  System.out.print(", ");
         //}
      }
      

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

2 Ответов

Рейтинг:
2

OriginalGriff

Два пути:
Первый заключается в том, чтобы вручную поставить разделитель перед вторым и последующими элементами:

for(i = 0; i < NUM_VALS; i++)
      {
         if (i > 0)
             System.out.Print(", ");
         System.out.print(hourlyTemp[i]);
      }
Есть много других способов сделать этот код, но это самый ясный.
Другой способ-использовать функцию соединения: Как лучше всего построить строку элементов с разделителями в Java? - переполнение стека[^] А потом распечатайте это.


Member 13458860

@OriginalGriff разве это не заставит запятую появиться еще до того, как числа начнутся? как -, 90, 92, 94, 95

OriginalGriff

Нет, попробуй.
Поскольку цикл начинается с нуля, и это специально исключено для запятой, вы получаете
90, 92, 93, ... 98, 99

Рейтинг:
0

Patrice T

Предполагая, что есть по крайней мере 1 элемент для печати, я делаю это следующим образом:

System.out.print(hourlyTemp[0]);
for(i = 1; i < NUM_VALS; i++)
{
  System.out.print(", " + hourlyTemp[i]);
}

Делая это таким образом, он устраняет необходимость иметь тест внутри цикла.