redefinir - Cómo convertir una matriz int a cadena con el método toString en Java
sobreescribir el método tostring() (8)
Aquí hay un ejemplo de pasar de una lista de cadenas a una cadena única, de regreso a una lista de cadenas.
Compilando:
$ javac test.java
$ java test
Corriendo:
Initial list: "abc" "def" "ghi" "jkl" "mno" As single string: "[abc, def, ghi, jkl, mno]" Reconstituted list: "abc" "def" "ghi" "jkl" "mno"
Código fuente:
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");
}
}
Esta pregunta ya tiene una respuesta aquí:
Estoy usando tratando de usar el método toString(int[])
, pero creo que lo estoy haciendo mal:
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Arrays.html#toString(int[])
Mi código:
int[] array = new int[lnr.getLineNumber() + 1];
int i = 0;
System.out.println(array.toString());
El resultado es:
[I@23fc4bec
También intenté imprimir así, pero:
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[])
Saqué este código de un código más grande y más complejo, pero puedo agregarlo si es necesario. Pero esto debería dar información general.
Estoy buscando resultados, como en la documentación de Oracle:
La representación de cadena consiste en una lista de elementos de la matriz, encerrados entre corchetes ("[]"). Los elementos adyacentes están separados por los caracteres "," (una coma seguida de un espacio).
El método toString en una matriz solo imprime la dirección de memoria que está obteniendo. Tienes que recorrer el conjunto e imprimir cada elemento por sí mismo
for(int i : array) {
System.println(i);
}
Esta función devuelve una matriz de int en el formato de cadena como "6097321041141011026"
private String IntArrayToString(byte[] array) {
String strRet="";
for(int i : array) {
strRet+=Integer.toString(i);
}
return strRet;
}
Lo que quiere es el Arrays.toString(int[])
:
import java.util.Arrays;
int[] array = new int[lnr.getLineNumber() + 1];
int i = 0;
..
System.out.println(Arrays.toString(array));
Hay un método de ayuda Arrays.toString
estático para cada tipo de primitiva java; el de int[]
dice esto :
public static String toString(int[] a)
Devuelve una representación de cadena de los contenidos de la matriz especificada. La representación de cadena consiste en una lista de elementos de la matriz, encerrados entre corchetes (
"[]"
). Los elementos adyacentes están separados por los caracteres", "
(una coma seguida de un espacio). Los elementos se convierten a cadenas comoString.valueOf(int)
. Devuelve"null"
sia
es nulo.
Muy de acuerdo con @Patrik M, pero lo que sucede con Arrays.toString es que incluye "[" y "]" y "," en la salida. Así que simplemente usaré una expresión regular para eliminarlos de esta manera.
String strOfInts = Arrays.toString(intArray).replaceAll("//[|//]|,|//s", "");
y ahora tiene una cadena que se puede analizar de nuevo a java.lang.Number
, por ejemplo,
long veryLongNumber = Long.parseLong(intStr);
O puedes usar las 8 corrientes de Java, si odias la expresión regular,
String strOfInts = Arrays
.stream(intArray)
.mapToObj(String::valueOf)
.reduce((a, b) -> a.concat(",").concat(b))
.get();
Puedes usar java.util.Arrays :
String res = Arrays.toString(array);
System.out.println(res);
Salida:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Usando la utilidad que describo here , puede tener un mayor control sobre la representación de cadena que obtiene para su matriz.
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 >"
System.out.println(array.toString());
debiera ser:
System.out.println(Arrays.toString(array));