2013-08-20 2 views
0

У меня есть строковый массив, который имеет k элементов. Я хочу распечатать их с помощью System.out.format, но проблема в том, что я не знаю k. Таким образом, по существу, я хочу использовать что-то вроде: System.out.format("%s %s ... k times", str1, str2, ... strk); (где к переменному)Форматирование массива строк в java

Я просматривал документацию Java, но не мог найти способ сделать это. Есть простой выход?

Спасибо!

+3

Возможно, 'Arrays.toString()' это, вероятно, то, что вы ищете. –

+0

Не совсем, дело в том, что я хочу указать количество символов, которые я хочу для каждой строки. Что-то вроде% 15s – ashu

+1

@ashu: ваше объяснение не имеет для меня большого смысла. Не могли бы вы отредактировать свой пост и дать пример массива + вывод? –

ответ

0

Используйте цикл:

for (String s : array) { 
    System.out.print(String.format("%s ", s); 
} 
System.out.println(); 
0
for(int i = 0; i < array.length; i++) { 
    System.out.print("%s ", array[i]); 
} 
+0

Вы бы сказали 'array [i]'. Я также предложил бы использовать 'array.length' вместо' k' – dic19

+0

Я взбивал это вместе слишком быстро, спасибо за указание на это. – Tricky12

+0

Ты добрый. – dic19

0

Try:

StringBuilder sb = new StringBuilder(); 
for(String s : myArray){ 
    sb.append(s).append(" "); 
} 
sb.append(myArray.length).append(" times"); 
System.out.println(sb.toString());    // print the string 
23

вы можете использовать

System.out.format("%s". Arrays.toString(your_array)); 
0

Вы просто хотите, чтобы сцепить к строк с пробелом между каждым из строки? Для этого вам не нужен System.out.format. Можно просто создать цикл, чтобы объединить их вместе с StringBuilder:

public String concatStrings(String... s) { 
    StringBuilder sb = new StringBuilder(); 
    if (s.length > 0) { 
     sb.append(s[0]); 
     for (int i = 1; i < s.length; i++) { 
      sb.append(' ').append(s[i]); 
     } 
    } 

    return sb.toString(); 
} 
0

Я хочу, чтобы указать количество символов, которые я хочу для каждой строки. Что-то вроде% 15s

Это будет указывать только прокладку для каждого String. Если длина String меньше значения, указанного в спецификаторе формата, то используется полный String. Вы можете использовать substring

void displayArray(String[] str, int characters) { 
    for (String s: str) { 
     System.out.print(s.substring(0, Math.min(s.length(), characters)) + " "); 
    } 
    System.out.println(); 
} 
-1
public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    String[] stringArrays ={"a","s","d","f",}; 
    for (int i = 0; i < stringArrays.length; i++) { 
     System.out.println(stringArrays[i]); 
    } 


} 
+0

Это не компилирует и не решает вопрос OP. –

0

Это типичный инструментов кода - код, который вы часто используете и повторное использование, и лучше всего хранить в антистатическом доступе классе утилиты (такие как StringUtil). Вот общая функция, которая работает на всех видах непримитивных массивов, и позволяет указать разделитель (пробел, запятая, косая черта, что угодно):

public static <T> void print (PrintStream out, String separator, T... elements) { 
     for (int i = 0; i < elements.length; i++) { 
      if (i > 0) { 
       out.print(separator); 
      } 
      out.print(elements[i]); 
     } 
    } 

Пример:

String[] s = {"A", "B", "C", "D", "E"}; 
Integer[] n = {1, 2, 3, 4, 5}; //non-primitive 
print(System.out, " ", s); 
print(System.out, ", ", n); 
1

Java 8 :

String formatted = Stream.of(arrayOfStrings) 
    .collect(Collectors.joining(",","[","]")); 

String formatted = Stream.of(arrayOfSomethingElse) 
    .map(Object::toString) 
    .collect(Collectors.joining(",","[","]")); 
Смежные вопросы