java - tridimensionales - Cómo imprimir una matriz bidimensional de cadenas como Cadena
llenar arreglo string java (5)
Sé cómo hacer el método toString
para matrices unidimensionales de cadenas, pero ¿cómo imprimo una matriz bidimensional? Con 1D lo hago de esta manera:
public String toString() {
StringBuffer result = new StringBuffer();
res = this.magnitude;
String separator = "";
if (res.length > 0) {
result.append(res[0]);
for (int i=1; i<res.length; i++) {
result.append(separator);
result.append(res[i]);
}
}
return result.toString();
¿Cómo puedo imprimir una matriz 2D?
Dos for
bucles:
for (int i=1; i<res.length; i++) {
for (int j=1; j<res[i].length; j++) {
result.append(separator);
result.append(res[i][j]);
}
}
La clase Arrays define un par de métodos útiles.
- Arrays. toString - que no funciona para matrices anidadas
- Arrays. deepToString - que hace exactamente lo que quieres
String[][] aastr = {{"hello", "world"},{"Goodbye", "planet"}};
System.out.println(Arrays.deepToString(aastr));
Da
[[hello, world], [Goodbye, planet]]
Usted simplemente itera dos veces sobre los elementos:
StringBuffer results = new StringBuffer();
String separator = ","
float[][] values = new float[50][50];
// init values
for (int i = 0; i < values.length; ++i)
{
result.append(''['');
for (int j = 0; j < values[i].length; ++j)
if (j > 0)
result.append(values[i][j]);
else
result.append(values[i][j]).append(separator);
result.append('']'');
}
IMPORTANTE: StringBuffer
también es útil porque puede encadenar operaciones, por ejemplo: buffer.append(..).append(..).append(..)
ya que devuelve una referencia a self! Use azúcar sintáctica cuando esté disponible.
IMPORTANTE2: ya que en este caso planea añadir muchas cosas al StringBuffer
, es bueno estimar una capacidad para evitar asignar y reubicar la matriz muchas veces durante las adjuntas, puede hacerlo calculando el tamaño de la matriz multidimensional multiplicado por el carácter promedio Longitud del elemento que planea añadir.
public static void main(String[] args) {
String array [] [] = {
{"*","*", "*", "*", "*", "*"},
{"*"},
{"*"},
{"*"},
{"*","*", "*", "*", "*", "*"},
{"*"},
{"*"},
{"*"},
{"*"},
{"*"}};
for (int row=0; row<array.length;row++) {
for (int column = 0; column < array[row].length; column++) {
System.out.print(array[row][column]);
}
System.out.println();
}
}
public static <T> String to2DString(T[][] x) {
final String vSep = "/n";
final String hSep = ", ";
final StringBuilder sb = new StringBuilder();
if(x != null)
for(int i = 0; i < x.length; i++) {
final T[] a = x[i];
if(i > 0) {
sb.append(vSep);
}
if(a != null)
for(int j = 0; j < a.length; j++) {
final T b = a[j];
if(j > 0) {
sb.append(hSep);
}
sb.append(b);
}
}
return sb.toString();
}