Який найпростіший спосіб друкувати Java-масив?


1944

У Java масиви не перекривають toString(), тому якщо ви спробуєте надрукувати його безпосередньо, ви отримаєте className+ '@' + шестнадцяткову частину hashCodeмасиву, як визначено Object.toString():

int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray);     // prints something like '[I@3343c8b3'

Але зазвичай ми насправді хочемо чогось більшого [1, 2, 3, 4, 5]. Який найпростіший спосіб зробити це? Ось кілька прикладів входів та виходів:

// Array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]

// Array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]

8
Яким ви хочете, щоб зображення було для інших об'єктів, ніж рядки? Результат виклику вString? У лапках чи ні?
Джон Скіт

3
Так, об'єкти будуть представлені методом toString () та без лапок (щойно редагував приклад виведення).
Alex Spurling

2
На практиці, тісно пов'язана з stackoverflow.com/questions/29140402 / ...
Raedwald

1
Цей дивний вихід - це не обов'язково розташування пам'яті. Це hashCode()в шістнадцятковий. Див Object#toString().
4castle

1
Для друку одновимірного або багатовимірного масиву в java8 перевірці stackoverflow.com/questions/409784 / ...
akhil_mittal

Відповіді:


2600

Оскільки Java 5 ви можете використовувати Arrays.toString(arr)абоArrays.deepToString(arr) для масивів у масивах. Зауважте, що Object[]версія викликає .toString()кожен об'єкт у масиві. Вихід навіть оформлений саме так, як ви запитуєте.

Приклади:

  • Простий масив:

    String[] array = new String[] {"John", "Mary", "Bob"};
    System.out.println(Arrays.toString(array));

    Вихід:

    [John, Mary, Bob]
  • Вкладений масив:

    String[][] deepArray = new String[][] {{"John", "Mary"}, {"Alice", "Bob"}};
    System.out.println(Arrays.toString(deepArray));
    //output: [[Ljava.lang.String;@106d69c, [Ljava.lang.String;@52e922]
    System.out.println(Arrays.deepToString(deepArray));

    Вихід:

    [[John, Mary], [Alice, Bob]]
  • double Масив:

    double[] doubleArray = { 7.0, 9.0, 5.0, 1.0, 3.0 };
    System.out.println(Arrays.toString(doubleArray));

    Вихід:

    [7.0, 9.0, 5.0, 1.0, 3.0 ]
  • int Масив:

    int[] intArray = { 7, 9, 5, 1, 3 };
    System.out.println(Arrays.toString(intArray));

    Вихід:

    [7, 9, 5, 1, 3 ]

3
Що робити, якщо ми маємо масив рядків і хочемо простого виведення; як:, String[] array = {"John", "Mahta", "Sara"}і ми хочемо цей вихід без дужок і коми John Mahta Sara:?
Hengameh

3
@Hengameh: Є кілька інших способів зробити це, але мій улюблений такий: javahotchocolate.com/notes/java.html#arrays-tostring .
Русс Бейтман

5
FYI, Arrays.deepToString()приймає лише Object [](або масив класів, що розширюються Object, наприклад Integer, таким чином, він не працюватиме на примітивному масиві типу int []. Але Arrays.toString(<int array>)відмінно працює для примітивних масивів.
Marcus

4
@Hengameh Існує метод, присвячений цьому. System.out.println(String.join(" ", new String[]{"John", "Mahta", "Sara"}))надрукує John Mahta Sara.
користувач8397947

2
@dorukayhan На насправді ви можете пропустити явно інстанцірованія масиву тут: String.join(" ", "John", "Mahta", "Sara")для .join(...)метод приймають масив в якості vararg параметра.
Амадан

354

Завжди спочатку перевіряйте стандартні бібліотеки.

import java.util.Arrays;

Потім спробуйте:

System.out.println(Arrays.toString(array));

або якщо ваш масив містить інші масиви як елементи:

System.out.println(Arrays.deepToString(array));

Що робити, якщо ми маємо масив рядків і хочемо простого виведення; як:, String[] array = {"John", "Mahta", "Sara"}і ми хочемо цей вихід без дужок і коми John Mahta Sara:?
Hengameh

1
@Hengameh Просто збережіть Arrays.toString (масив) до змінної рядка, а потім видаліть дужки методом заміни Java
Naveed Ahmad

12
@Hengameh У наш час з Java 8 : String.join(" ", Arrays.asList(array)). doc
Джастін

106

Це приємно знати, однак, щоби "завжди спочатку перевірити стандартні бібліотеки", я ніколи не натрапляв на хитрість Arrays.toString( myarray )

- оскільки я зосередився на типі міара, щоб побачити, як це зробити. Мені не хотілося повторювати це: я хотів простий дзвінок, щоб він вийшов подібним до того, що я бачу у відладчику Eclipse та myarray.toString (), просто не робив цього.

import java.util.Arrays;
.
.
.
System.out.println( Arrays.toString( myarray ) );

Що робити, якщо ми маємо масив рядків і хочемо простого виведення; як:, String[] array = {"John", "Mahta", "Sara"}і ми хочемо цей вихід без дужок і коми John Mahta Sara:?
Hengameh

3
@Hengameh Я думаю, це інша тема. Ви можете маніпулювати цим рядком за допомогою спільних рядкових операцій після цього ... Як Arrays.toString (myarray) .replace ("[", "(") і т.
Д.

91

У JDK1.8 ви можете використовувати сукупні операції та лямбда-вираз:

String[] strArray = new String[] {"John", "Mary", "Bob"};

// #1
Arrays.asList(strArray).stream().forEach(s -> System.out.println(s));

// #2
Stream.of(strArray).forEach(System.out::println);

// #3
Arrays.stream(strArray).forEach(System.out::println);

/* output:
John
Mary
Bob
*/

50
Або менш громіздкий,Arrays.stream(strArray).forEach(System.out::println);
Алексіс К.

9
Це незграбно. Це має бути System.out::printlnпосилання на метод Java 8. У вас код створює зайву лямбда.
Борис Павук

2
Просто пропустіть Arrays.asListі зробітьArrays.stream(strArray).forEach(System.out::println)
Джастін

1
@AlexisC. Тому що його також можна використовувати з іншими об’єктами, крім масивів.
Яссін Хаджай

1
@YassinHajaj Обидва. Наприклад, якщо ви хочете провести потоковий діапазон через масив, яким Stream.ofби ішов ідіоматичний спосіб .skip(n).limit(m). Поточна реалізація не повертає розмір потоку SIZED, тоді як Arrays.stream(T[], int, int)це призводить до кращого розбиття продуктивності, якщо ви хочете виконувати операції паралельно. Крім того, якщо у вас є int[], ви можете випадково використовувати, Stream.ofякий поверне a Stream<int[]>з одним елементом, при Arrays.streamцьому ви отримаєте IntStreamбезпосередньо.
Алексіс К.

41

Починаючи з Java 8, можна також скористатися join()методом, передбаченим класом String, для друку елементів масиву без дужок і розділених роздільником для вибору (що є символом пробілу для прикладу, показаного нижче):

String[] greeting = {"Hey", "there", "amigo!"};
String delimiter = " ";
String.join(delimiter, greeting) 

Вихід буде "Ей, там amigo!".


40

Якщо ви використовуєте Java 1.4, ви можете:

System.out.println(Arrays.asList(array));

(Звичайно, це працює і в 1,5+).


38
На жаль, це працює лише з масивами об'єктів, а не з масивами примітивів.
Alex Spurling

34

Arrays.toString

Як пряму відповідь, рішення, яке надається декількома, включаючи @Esko , за допомогою Arrays.toStringіArrays.deepToString методів методів, є просто найкращим.

Java 8 - Stream.collect (приєднання ()), Stream.forEach

Нижче я намагаюсь перелічити деякі інші запропоновані методи, намагаючись трохи покращити, найбільш помітним доповненням є використання Stream.collectоператора, використовуючи a , імітувати те, що робиться.joining CollectorString.join

int[] ints = new int[] {1, 2, 3, 4, 5};
System.out.println(IntStream.of(ints).mapToObj(Integer::toString).collect(Collectors.joining(", ")));
System.out.println(IntStream.of(ints).boxed().map(Object::toString).collect(Collectors.joining(", ")));
System.out.println(Arrays.toString(ints));

String[] strs = new String[] {"John", "Mary", "Bob"};
System.out.println(Stream.of(strs).collect(Collectors.joining(", ")));
System.out.println(String.join(", ", strs));
System.out.println(Arrays.toString(strs));

DayOfWeek [] days = { FRIDAY, MONDAY, TUESDAY };
System.out.println(Stream.of(days).map(Object::toString).collect(Collectors.joining(", ")));
System.out.println(Arrays.toString(days));

// These options are not the same as each item is printed on a new line:
IntStream.of(ints).forEach(System.out::println);
Stream.of(strs).forEach(System.out::println);
Stream.of(days).forEach(System.out::println);

33

До Java 8

Ми могли використовувати Arrays.toString(array)для друку одновимірного масиву та Arrays.deepToString(array)для багатовимірних масивів.

Java 8

Тепер у нас є можливість Streamі lambdaдрукувати масив.

Друк одновимірного масиву:

public static void main(String[] args) {
    int[] intArray = new int[] {1, 2, 3, 4, 5};
    String[] strArray = new String[] {"John", "Mary", "Bob"};

    //Prior to Java 8
    System.out.println(Arrays.toString(intArray));
    System.out.println(Arrays.toString(strArray));

    // In Java 8 we have lambda expressions
    Arrays.stream(intArray).forEach(System.out::println);
    Arrays.stream(strArray).forEach(System.out::println);
}

Вихід:

[1, 2, 3, 4, 5]
[Джон, Мері, Боб]
1
2
3
4
5
Джон
Марія
Боб

Друк багатовимірного масиву На всякий випадок, якщо ми хочемо надрукувати багатовимірний масив, ми можемо використовувати Arrays.deepToString(array)як:

public static void main(String[] args) {
    int[][] int2DArray = new int[][] { {11, 12}, { 21, 22}, {31, 32, 33} };
    String[][] str2DArray = new String[][]{ {"John", "Bravo"} , {"Mary", "Lee"}, {"Bob", "Johnson"} };

    //Prior to Java 8
    System.out.println(Arrays.deepToString(int2DArray));
    System.out.println(Arrays.deepToString(str2DArray));

    // In Java 8 we have lambda expressions
    Arrays.stream(int2DArray).flatMapToInt(x -> Arrays.stream(x)).forEach(System.out::println);
    Arrays.stream(str2DArray).flatMap(x -> Arrays.stream(x)).forEach(System.out::println);
} 

Тепер сенс слід спостерігати, що метод Arrays.stream(T[]), який у разі int[]повертає нас, Stream<int[]>а потім методflatMapToInt() відображає кожен елемент потоку із вмістом відображеного потоку, що виробляється, застосовуючи надану функцію відображення до кожного елемента.

Вихід:

[[11, 12], [21, 22], [31, 32, 33]]
[[Джон, Браво], [Мері, Лі], [Боб, Джонсон]]
11
12
21
22
31
32
33
Джон
Браво
Мері
Лі
Боб
Джонсон


Що робити, якщо ми маємо масив рядків і хочемо простого виведення; як:, String[] array = {"John", "Mahta", "Sara"}і ми хочемо цей вихід без дужок і коми John Mahta Sara:?
Hengameh

28

Arrays.deepToString(arr) друкує лише на одній лінії.

int[][] table = new int[2][2];

Щоб насправді отримати таблицю для друку у вигляді двовимірної таблиці, мені довелося це зробити:

System.out.println(Arrays.deepToString(table).replaceAll("],", "]," + System.getProperty("line.separator")));

Здається, що Arrays.deepToString(arr)метод повинен приймати роздільний рядок, але, на жаль, це не так.


3
Можливо, використовуйте System.getProperty ("line.separator"); замість \ r \ n, тому він підходить і для не-Windows.
Скутер

ви можете використовувати System.lineSeparator () зараз
Novaterata

20
for(int n: someArray) {
    System.out.println(n+" ");
}

6
Таким чином ви опинитесь порожнім місцем;)
Маттіас

1
@ matthiad .. цей рядок уникне порожнього простору System.out.println (n + (someArray.length == n)? "": "");
Мухаммад Сулеман

3
Найгірший спосіб зробити це.
NameNotFoundException

@MuhammadSuleman Це не працює, оскільки це цикл для кожного. n- фактичне значення масиву, а не індекс. Для регулярного циклу це також було б (someArray.length - 1) == i, оскільки він розривається, коли iдорівнює довжині масиву.
Radiodef

17

Різні способи друкувати масиви на Java:

  1. Простий шлях

    List<String> list = new ArrayList<String>();
    list.add("One");
    list.add("Two");
    list.add("Three");
    list.add("Four");
    // Print the list in console
    System.out.println(list);

Вихід: [один, два, три, чотири]

  1. Використання toString()

    String[] array = new String[] { "One", "Two", "Three", "Four" };
    System.out.println(Arrays.toString(array));

Вихід: [один, два, три, чотири]

  1. Друк масивів масивів

    String[] arr1 = new String[] { "Fifth", "Sixth" };
    String[] arr2 = new String[] { "Seventh", "Eight" };
    String[][] arrayOfArray = new String[][] { arr1, arr2 };
    System.out.println(arrayOfArray);
    System.out.println(Arrays.toString(arrayOfArray));
    System.out.println(Arrays.deepToString(arrayOfArray));

Вихід: [[Ljava.lang.String; @ 1ad086a [[Ljava.lang.String; @ 10385c1, [Ljava.lang.String; @ 42719c] [[П'ятий, Шостий], [Сьомий, Восьмий]]

Ресурс: Доступ до масиву


13

На мою думку, використання регулярних для циклу - це найпростіший спосіб друку масиву. Тут ви маєте зразок коду на основі вашого intArray

for (int i = 0; i < intArray.length; i++) {
   System.out.print(intArray[i] + ", ");
}

Це дає вихід як ваш 1, 2, 3, 4, 5


4
Він друкує "1, 2, 3, 4, 5", як вихід, він також друкує кому після останнього елемента.
icza

Яке рішення для відсутності коми після останнього елемента?
Мона Джалал

3
Ви можете замінити код у циклі наSystem.out.print(intArray[i]); if(i != intArray.length - 1) System.out.print(", ");
Nepoxx

2
Ви також можете використовувати System.out.print(i + (i < intArray.length - 1 ? ", " : ""));для поєднання цих двох рядків.
Нік Сувін

Ви можете використовувати StringBuilder і обрізати кому в кінці. int [] intArray = new int [] {1, 2, 3, 4, 5}; final StringBuilder sb = новий StringBuilder (); для (int i: intArray) {sb.append (intArray [i]). append (","); } if (sb.length ()> 0) {sb.setLength (sb.length () - 1); } System.out.println (sb.toString ()); Це виводить "1, 2, 3, 4, 5".
Рік Райкер

8

Я нещодавно натрапив на цю посаду у ванільній #Java Це не дуже зручно писати Arrays.toString(arr);, то java.util.Arrays;весь час імпортувати .

Зверніть увагу, це не є постійним виправленням будь-якими способами. Просто хак, який може спростити налагодження.

Друк масиву безпосередньо дає внутрішнє подання та хеш-код. Тепер усі класи мають Objectбатьківський тип. Отже, чому б не зламати Object.toString()? Без змін клас Object виглядає так:

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

Що робити, якщо це змінено на:

public String toString() {
    if (this instanceof boolean[])
        return Arrays.toString((boolean[]) this);
    if (this instanceof byte[])
        return Arrays.toString((byte[]) this);
    if (this instanceof short[])
        return Arrays.toString((short[]) this);
    if (this instanceof char[])
        return Arrays.toString((char[]) this);
    if (this instanceof int[])
        return Arrays.toString((int[]) this);
    if (this instanceof long[])
        return Arrays.toString((long[]) this);
    if (this instanceof float[])
        return Arrays.toString((float[]) this);
    if (this instanceof double[])
        return Arrays.toString((double[]) this);
    if (this instanceof Object[])
        return Arrays.deepToString((Object[]) this);
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

Цей Modded клас може просто бути додані в шлях класу, додавши наступне в командному рядку: -Xbootclasspath/p:target/classes.

Тепер, маючи доступність deepToString(..)з Java 5, її toString(..)можна легко змінити, deepToString(..)щоб додати підтримку масивів, що містять інші масиви.

Я вважав, що це досить корисний злом, і було б чудово, якби Java могла просто додати це. Я розумію потенційні проблеми із наявністю дуже великих масивів, оскільки представлення рядків може бути проблематичним. Можливо, передайте щось подібне System.outабо PrintWriterдля таких випадків.


2
Ви хочете виконати ці ifумови на кожному об'єкті?
sidgate

+1 лише для ідеї, але виходячи з попереднього коментаря, чи можемо ми реалізувати реалізацію масиву безпосередньо, а не залежно від Objectзагального батька? Чи можемо ми пропрацювати цю ідею далі? Не те, що я думаю, що змінити поведінку об'єктів java.lang за замовчуванням - це те, що я б заохочував ...
YoYo

8

Він повинен працювати завжди в будь-якій версії JDK, яку ви використовуєте:

System.out.println(Arrays.asList(array));

Він буде працювати, якщо Arrayмістить Об'єкти. ЯкщоArray містять примітивні типи, ви можете використовувати класи обгортки, а не зберігати примітивні безпосередньо як ..

Приклад:

int[] a = new int[]{1,2,3,4,5};

Замініть його на:

Integer[] a = new Integer[]{1,2,3,4,5};

Оновлення:

Так ! це слід зазначити, що перетворення масиву в масив об'єктів АБО для використання масиву Об'єкт коштує дорого і може сповільнити виконання. це відбувається за природою Java під назвою автобоксинг.

Тож лише для друкарських цілей, його не слід використовувати. ми можемо зробити функцію, яка приймає масив як параметр і друкує потрібний формат як

public void printArray(int [] a){
        //write printing code
} 

1
Перетворення масиву до списку просто для цілей друку не здається дуже винахідливим рішенням; і враховуючи, що той самий клас має toString(..), це перемагає мене, чому хтось коли-небудь це зробив.
Дебосміт Рей

8

У java 8 це легко. є два ключові слова

  1. потік: Arrays.stream(intArray).forEach
  2. посилання на метод: ::println

    int[] intArray = new int[] {1, 2, 3, 4, 5};
    Arrays.stream(intArray).forEach(System.out::println);

Якщо ви хочете надрукувати всі елементи в масиві в одному рядку, просто використовуйте printзамість printlnie

int[] intArray = new int[] {1, 2, 3, 4, 5};
Arrays.stream(intArray).forEach(System.out::print);

Ще один спосіб без посилання на метод - просто використовувати:

int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(intArray));

1
Це надрукує кожен елемент масиву в окремому рядку, щоб він не відповідав вимогам.
Alex Spurling

якщо ви хочете друкувати всі елементи масиву в одному рядку, тоді просто використовуйте print замість println, тобто int [] intArray = new int [] {1, 2, 3, 4, 5}; Arrays.stream (intArray) .forEach (System.out :: print); antotherway без methodreference просто використовувати int [] intArray = new int [] {1, 2, 3, 4, 5}; System.out.println (Arrays.toString (intArray));
suatCoskun

6

Є ще один спосіб, якщо ваш масив має тип char []:

char A[] = {'a', 'b', 'c'}; 

System.out.println(A); // no other arguments

відбитки

abc

5

Щоб додати до всіх відповідей, друк об'єкта у вигляді рядка JSON також є варіантом.

Використання Джексона:

ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
System.out.println(ow.writeValueAsString(anyArray));

Використання Gson:

Gson gson = new Gson();
System.out.println(gson.toJson(anyArray));

Це я і роблю. За допомогою цього ви можете друкувати довільно складні структури до тих пір, поки вони кодуються JSON. Я завжди переконуюсь, що використовую «гарненько». Ваш другий приклад робить це? Я б подумав, що вам знадобиться позначити "гарний" варіант, щоб отримати це.
Стів

5

Ви можете провести цикл через масив, роздруковуючи кожен елемент під час циклу. Наприклад:

String[] items = {"item 1", "item 2", "item 3"};

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

    System.out.println(items[i]);

}

Вихід:

item 1
item 2
item 3

5

Існує наступний спосіб друкувати масив

 // 1) toString()  
    int[] arrayInt = new int[] {10, 20, 30, 40, 50};  
    System.out.println(Arrays.toString(arrayInt));

// 2 for loop()
    for (int number : arrayInt) {
        System.out.println(number);
    }

// 3 for each()
    for(int x: arrayInt){
         System.out.println(x);
     }

4

Спрощений ярлик, який я спробував:

    int x[] = {1,2,3};
    String printableText = Arrays.toString(x).replaceAll("[\\[\\]]", "").replaceAll(", ", "\n");
    System.out.println(printableText);

Він надрукує

1
2
3

У цьому підході не потрібні петлі, і це найкраще лише для невеликих масивів


4

Для кожного циклу також можна використовувати для друку елементів масиву:

int array[] = {1, 2, 3, 4, 5};
for (int i:array)
    System.out.println(i);

@firephil System.out.println (a [i]); використовується для звичайного циклу, де створюється індекс "i" і друкується значення для кожного індексу. Я використав цикл "для кожного". Спробуйте, сподіваюся, ви зрозумієте мою думку.
hasham.98

Так, це найкоротший спосіб друкувати масив
Manjitha teshara

3
public class printer {

    public static void main(String[] args) {
        String a[] = new String[4];
        Scanner sc = new Scanner(System.in);
        System.out.println("enter the data");
        for (int i = 0; i < 4; i++) {
            a[i] = sc.nextLine();
        }
        System.out.println("the entered data is");
        for (String i : a) {
            System.out.println(i);
        }
      }
    }

3

Використання методів org.apache.commons.lang3.StringUtils.join (*) може бути варіантом
Наприклад:

String[] strArray = new String[] { "John", "Mary", "Bob" };
String arrayAsCSV = StringUtils.join(strArray, " , ");
System.out.printf("[%s]", arrayAsCSV);
//output: [John , Mary , Bob]

Я використовував таку залежність

<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>

Додавання залежності через щось тривіальне, що можна зробити у двох рядках коду - це кричущий антипатерн.
Jurez

commons-lang3 - це дуже топольна залежність, і зауважте, що ця відповідь була в тому, що більшість людей не використовували Java 8
Хаїм Раман

2

Це позначено як дублікат для друку байта [] . Примітка: для байтового масиву є додаткові методи, які можуть бути доречними.

Ви можете роздрукувати його як String, якщо він містить символи ISO-8859-1.

String s = new String(bytes, StandardChars.ISO_8559);
System.out.println(s);
// to reverse
byte[] bytes2 = s.getBytes(StandardChars.ISO_8559);

або якщо він містить рядок UTF-8

String s = new String(bytes, StandardChars.UTF_8);
System.out.println(s);
// to reverse
byte[] bytes2 = s.getBytes(StandardChars.UTF_8);

або якщо ви хочете роздрукувати його як шістнадцятковий.

String s = DatatypeConverter.printHexBinary(bytes);
System.out.println(s);
// to reverse
byte[] bytes2 = DatatypeConverter.parseHexBinary(s);

або якщо ви хочете роздрукувати його як base64.

String s = DatatypeConverter.printBase64Binary(bytes);
System.out.println(s);
// to reverse
byte[] bytes2 = DatatypeConverter.parseBase64Binary(s);

або якщо ви хочете надрукувати масив підписаних значень байтів

String s = Arrays.toString(bytes);
System.out.println(s);
// to reverse
String[] split = s.substring(1, s.length() - 1).split(", ");
byte[] bytes2 = new byte[split.length];
for (int i = 0; i < bytes2.length; i++)
    bytes2[i] = Byte.parseByte(split[i]);

або якщо ви хочете надрукувати масив непідписаних значень байтів

String s = Arrays.toString(
               IntStream.range(0, bytes.length).map(i -> bytes[i] & 0xFF).toArray());
System.out.println(s);
// to reverse
String[] split = s.substring(1, s.length() - 1).split(", ");
byte[] bytes2 = new byte[split.length];
for (int i = 0; i < bytes2.length; i++)
    bytes2[i] = (byte) Integer.parseInt(split[i]); // might need a range check.

1
// array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};

System.out.println(Arrays.toString(intArray));

output: [1, 2, 3, 4, 5]

// array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};

System.out.println(Arrays.toString(strArray));

output: [John, Mary, Bob]

1

якщо у вас jdk 8.

public static void print(int[] array) {
    StringJoiner joiner = new StringJoiner(",", "[", "]");
    Arrays.stream(array).forEach(element -> joiner.add(element + ""));
    System.out.println(joiner.toString());
}


int[] array = new int[]{7, 3, 5, 1, 3};
print(array);

вихід:

[7,3,5,1,3]

Це краще, ніж прийнята відповідь тим, що дає більше контролю над роздільником, префіксом та суфіксом. Однак я видалив зайве toString()у фіналі System.out.println()і використав би його joiner.add(element.toString())замість того, щоб додавати порожній рядок. Це рішення працює і для масивів непомітивних типів, і рівномірно.
Джон Макклайн

Моє погано, element.toString()всередині joiner.add()- це лише для примітивних типів. Ще потрібно використовувати Integer.toString(element)подібні конструкції для примітивних типів. Особисто я використовував цикл foreach for (int element : array) joiner.add(Integer.toString(element));замість потоків, але це справа смаку.
Джон Макклайн


0

Якщо ви використовуєте бібліотеку Commons.Lang , ми могли б зробити:

ArrayUtils.toString(array)

int[] intArray = new int[] {1, 2, 3, 4, 5};
String[] strArray = new String[] {"John", "Mary", "Bob"};
ArrayUtils.toString(intArray);
ArrayUtils.toString(strArray);

Вихід:

{1,2,3,4,5}
{John,Mary,Bob}

0

// Якщо ви друкуєте адресу елемента масиву на консолі в java.

      int myArrayElement[] = {1,2,3,4,5,6,7,8,9,10};
       Log.i("MyTag",myIntegerNumbers + "");

Схоже, це не відповідає на питання.
користувач

-1

Існує кілька способів друкувати елементи масиву. По-перше, я поясню це, що таке масив? .. Масив - це проста структура даних для зберігання даних. Коли ви визначаєте масив, виділіть набір допоміжних блоків пам'яті в оперативній пам'яті. Ці блоки пам'яті приймаються одним блоком.

Гаразд, я створу такий масив,

class demo{
      public static void main(String a[]){

           int[] number={1,2,3,4,5};

           System.out.print(number);
      }
}

Тепер подивіться на вихід,

введіть тут опис зображення

Ви можете бачити невідомий рядок, надрукований. Як я вже згадував, адреса пам'яті, масив (числовий масив) якої оголошено, друкується. Якщо ви хочете відобразити елементи в масиві, ви можете використовувати "for loop", наприклад, цей ..

class demo{
      public static void main(String a[]){

           int[] number={1,2,3,4,5};

           int i;

           for(i=0;i<number.length;i++){
                 System.out.print(number[i]+"  ");
           }
      }
}

Тепер подивіться на вихід,

введіть тут опис зображення

Гаразд, успішно надруковані елементи одного вимірювального масиву. Зараз я буду розглядати два розмірних масиви. Я оголошу два масиви розмірами як "число2" і надрукую елементи за допомогою ключового слова "Arrays.deepToString ()". Перш ніж використовувати це Вам доведеться імпортувати бібліотеку "java.util.Arrays".

 import java.util.Arrays;

 class demo{
      public static void main(String a[]){

           int[][] number2={{1,2},{3,4},{5,6}};`

           System.out.print(Arrays.deepToString(number2));
      }
}

врахуйте вихід,

введіть тут опис зображення

У той же час, використовуючи два для циклу, можна роздрукувати 2D елементи. Дякую!


int масив [] = {1, 2, 3, 4, 5}; для (int i: масив) System.out.println (i);
Манджіта тешара

спробуйте це, я думаю, що це найкоротший спосіб друкувати масив
Manjitha teshara

"адреса пам'яті, чий масив (масив чисел) оголошено надруковано" Це зовсім не вірно, її системний хеш-код об'єкта, і це може базуватися на багатьох речах, включаючи адресу пам'яті, але це може змінитися пізніше, і хеш-код не буде змінити. І в даний час його здебільшого випадкове число. gotofinal.dev/java/2017/10/08/java-default-hashcode.html
GotoFinal
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.