Как преобразовать массив в строку с помощью метода 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 документация:
строковое представление состоит из списка элементов массива, заключенный в квадратные скобки ("[]"). Соседние элементы разделяются символами", " (запятая, за которой следует пробел).
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.
можно использовать 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