Вопрос по arrays, java – Как преобразовать массив int в строку с помощью метода toString в Java [duplicate]

128

This question already has an answer here:

Я использую, пытаясь использоватьtoString(int[]) метод, но я думаю, что я делаю это неправильно:

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Arrays.html#toString (INT [])

Мой код:

int[] array = new int[lnr.getLineNumber() + 1];
int i = 0;

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

Выход:

[[email protected]

Также я пробовал печатать вот так, но:

System.out.println(new String().toString(array));  // **error on next line**
The method toString() in the type String is not applicable for the arguments (int[])

I took this code out of bigger and more complex code, but I can add it if needed. But this should give general information.

Я ищу вывод, как в документации Oracle:

The string representation consists of a list of the array's elements, enclosed in square brackets ("[]"). Adjacent elements are separated by the characters ", " (a comma followed by a space).

Ваш Ответ

8   ответов
263

Arrays.toString(int[]) метод:

import java.util.Arrays;

int[] array = new int[lnr.getLineNumber() + 1];
int i = 0;

..      

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

Есть статикаArrays.toString вспомогательный метод для каждого примитивного типа Java; один дляint[] says this:

public static String toString(int[] a)

Returns a string representation of the contents of the specified array. The string representation consists of a list of the array's elements, enclosed in square brackets ("[]"). Adjacent elements are separated by the characters ", " (a comma followed by a space). Elements are converted to strings as by String.valueOf(int). Returns "null" if a is null.

Какой самый простой способ перейти от & quot; [x, y, z] & quot; вернуться к массиву или списку?
@Sbodd - я придумал пример, основанный на ArrayList, и опубликовал ответ. Это было связано с проблемой, которую мне нужно было решить для приложения, которое я портирую, но может сэкономить кому-то время.
@nerdistcolony Нет ничего более чистого, чем Arrays.toString, чтобы пойти другим путем - но посмотритеstackoverflow.com/questions/456367/… для некоторых предложений.
13

который вы получаете. Вы должны зациклить массив и распечатать каждый элемент отдельно

for(int i : array) {
 System.println(i);
}
20

но с Arrays.toString дело в том, что он включает"[" а также"]" а также"," на выходе. Поэтому я просто использую регулярное выражение для удаления их из outout, как это

String strOfInts = Arrays.toString(intArray).replaceAll("\\[|\\]|,|\\s", "");

и теперь у вас есть строка, которую можно проанализировать обратноjava.lang.Number, например,

long veryLongNumber = Long.parseLong(intStr);

Или вы можете использовать потоки Java 8, если вы ненавидите регулярные выражения,

String strOfInts = Arrays
            .stream(intArray)
            .mapToObj(String::valueOf)
            .reduce((a, b) -> a.concat(",").concat(b))
            .get();
3

6097321041141011026 & quot;

private String IntArrayToString(byte[] array) {
        String strRet="";
        for(int i : array) {
            strRet+=Integer.toString(i);
        }
        return strRet;
    }
Из соображений производительности лучше использовать StringBuilder, а не прямую конкатенацию строк.
3

ВотВы можете лучше контролировать строковое представление, которое вы получаете для своего массива.

String[] s = { "hello", "world" };
RichIterable<String> r = RichIterable.from(s);
r.mkString();                 // gives "hello, world"
r.mkString(" | ");            // gives "hello | world"
r.mkString("< ", ", ", " >"); // gives "< hello, world >"
0

рок.

Компиляция:

$ javac test.java
$ java test

Бег:

    Initial list:

        "abc"
        "def"
        "ghi"
        "jkl"
        "mno"

    As single string:

        "[abc, def, ghi, jkl, mno]"

    Reconstituted list:

        "abc"
        "def"
        "ghi"
        "jkl"
        "mno"

Исходный код:

import java.util.*;
public class test {

    public static void main(String[] args) {
        List<String> listOfStrings= new ArrayList<>();
        listOfStrings.add("abc");
        listOfStrings.add("def");
        listOfStrings.add("ghi");
        listOfStrings.add("jkl");
        listOfStrings.add("mno");

        show("\nInitial list:", listOfStrings);

        String singleString = listOfStrings.toString();

        show("As single string:", singleString);

        List<String> reconstitutedList = Arrays.asList(
             singleString.substring(0, singleString.length() - 1)
                  .substring(1).split("[\\s,]+"));

        show("Reconstituted list:", reconstitutedList);
    }

    public static void show(String title, Object operand) {
        System.out.println(title + "\n");
        if (operand instanceof String) {
            System.out.println("    \"" + operand + "\"");
        } else {
            for (String string : (List<String>)operand)
                System.out.println("    \"" + string + "\"");
        }
        System.out.println("\n");
    }
}
Никто не просил об этом.
@Roberto Он использует связанную технологию (методы Array), и я предоставил ее в качестве дополнения к ответу, связанному с int, для людей, работающих с преобразованиями массивов, даже если он показывает строки, потому что я знал, что уже есть решения, связанные с int. самодовольно об этом. Может быть, попробуйте сделать что-то хорошее здесь, прежде чем пытаться убить других людей.
Нет, вы не правы. Первое предложение уточняет цель, и это достаточно связано. Внесите что-нибудь полезное, прежде чем подумать о том, чтобы помешать другим пользователям. Вы не сделали ничего, кроме того, что сделали что-то хуже для других.
19

java.util.Arrays:

String res = Arrays.toString(array);
System.out.println(res);

Выход:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
как извлечь массив int [] из этого вывода.
34
System.out.println(array.toString());

должно быть:

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

Похожие вопросы