Как преобразовать массив в строку с помощью метода toString в Java [дубликат]



этот вопрос уже есть ответ здесь:



Я пытаюсь использовать 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());


выход:



[I@23fc4bec


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



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[])


я взял этот код из большего и более сложного кода, но я могу добавить его, если это необходимо. Но это должно дать общую информацию.



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




строковое представление состоит из списка элементов массива, заключенный в квадратные скобки ("[]"). Соседние элементы разделяются символами", " (запятая, за которой следует пробел).


688   8  

8 ответов:

что вы хотите-это 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[] говорит:

public static String toString(int[] a)

возвращает строковое представление содержимого указанного массива. Строковое представление состоит из списка элементов массива, заключенный в квадратные скобки ("[]"). Соседние элементы разделены символами ", " (a запятая с пробелом). Элементы преобразуются в строки как String.valueOf(int). Возвращает "null" если a имеет значение null.

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

должно быть:

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

можно использовать java.утиль.Массивы:

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

выход:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

очень согласен с @Patrik M,но дело с массивами.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();

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

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

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

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 >"

эта функция возвращает массив int в Строковой форме типа "6097321041141011026"

private String IntArrayToString(byte[] array) {
        String strRet="";
        for(int i : array) {
            strRet+=Integer.toString(i);
        }
        return strRet;
    }

вот пример перехода от списка строк к одной строке, обратно к списку строк.

сборка:

$ 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");
    }
}

Comments

    Ничего не найдено.