Recibo una variable de datos a través de una API como esta (observe los corchetes):

[
    ["2018-09-03",287.5,289.8,286.15,287.3,287.65,1649749.0,4750.35],
    ["2018-08-31",286.25,290.5,285.0,285.5,285.95,3716997.0,10691.41],
    ["2018-08-30",286.45,290.55,284.6,286.05,285.6,3861403.0, 11097.03]
]

¿Qué estoy haciendo mal en el siguiente script? Soy nuevo en Java y necesito imprimir este bloque en la tabla. Por favor ayudame, gracias de antemano

public class ArrayLoopTest{

     public static void main(String []args){
         String[] data = new String[
            ["2018-09-03",287.5,289.8,286.15,287.3,287.65,1649749.0,4750.35],
            ["2018-08-31",286.25,290.5,285.0,285.5,285.95,3716997.0,10691.41],
            ["2018-08-30",286.45,290.55,284.6,286.05,285.6,3861403.0, 11097.03]
        ];
        for (i=0;i < data.length;i++) {
            System.out.println(data[i]);
        }
     }
}
0
Vivek Bajpai 8 sep. 2018 a las 16:03

4 respuestas

La mejor respuesta

Al usar una matriz, tenga en cuenta que la estructura de datos de la matriz puede contener datos de un solo tipo. Esto significa esencialmente que si una matriz se declara como String, entonces solo puede tener datos de tipo String.

Por lo tanto, puede usar el siguiente código para definir e imprimir la matriz 2D.

public static void main(String[] args) {        

    String[][] data = {
            {"2018-09-03","287.5","289.8","286.15","287.3","287.65","1649749.0","4750.35"}      
            ,{"2018-08-31","286.25","290.5","285.0","285.5","285.95","3716997.0","10691.41"}
            ,{"2018-08-30","286.45","290.55","284.6","286.05","285.6","3861403.0", "11097.03"}
    };


    for(int i=0;i<data.length;i++) {
        for(int j=0;j<data[i].length;j++) {
            System.out.print(data[i][j]);
        }
        System.out.println();
    }

    // or you can print like this

    for(int i=0;i<data.length;i++) {

        System.out.println(Arrays.toString(data[i])+",");

    }
}

Editar:

Puede usar la biblioteca com.google.gson como se muestra a continuación para obtener un 2D array:

//String apiResponse = get Api Response
JsonParser parser = new JsonParser();    // parser converstthe api response to Json
JsonObject obj = (JsonObject) parser.parse(apiResponse);
JsonObject obj1 = obj.getAsJsonObject("dataset");
JsonArray arr = obj1.get("data").getAsJsonArray();

String[][] newString = new String[arr.size()][arr.get(0).getAsJsonArray().size()];

for(int i=0;i<newString.length;i++) {

            for(int j=0;j<newString[i].length;j++) {


                newString[i][j] = arr.get(i).getAsJsonArray().get(j).getAsString();

            }

        }


System.out.println(Arrays.deepToString(newString));
0
Yug Singh 8 sep. 2018 a las 19:41

Esto no se compilará ya que su matriz no tiene el formato correcto y la variable i no está definida. Debe recorrer los elementos en cada submatriz e imprimirlos en su lugar.

String[][] data = new String[][]{
    { "2018-09-03", "287.5", "289.8", "286.15", "287.3", "287.65", "1649749.0", "4750.35" },
    { "2018-08-31", "286.25", "290.5", "285.0", "285.5", "285.95", "3716997.0", "10691.41" },
    { "2018-08-30", "286.45", "290.55", "284.6", "286.05", "285.6", "3861403.0", "11097.03" }
};
for (int i = 0; i < data.length; i++) {
    for (int j = 0; j < data[i].length; j++) {
        System.out.print(data[i][j] + " ");
    }
    System.out.print("\n");
}
0
Mike 8 sep. 2018 a las 21:16

Se puede resolver de dos maneras, unidimensional y bidimensional, si está pensando en colocar diferentes tipos de datos en una sola matriz, eso no es posible en Java. Puede colocar solo un tipo de datos dentro del tipo de matriz definida.

Código de matriz bidimensional:

public class ArrayLoopTest{

 public static void main(String []args){
     String[][] data = 
     {
        {"2018-09-03","287.5","289.8","286.15","287.3","287.65","1649749.0","4750.35"},
        { "2018-08-31","286.25","290.5","285.0","285.5","285.95","3716997.0","10691.41"},
        {  "2018-08-30","286.45","290.55","284.6","286.05","285.6","3861403.0", "11097.03"}
     };
    for (int i=0;i < data.length;i++) {
    {
        for(int j=0;j<data[i].length;j++)
        {
            System.out.print(data[i][j]+" "); 
        }
        System.out.println();
    }
    }

 }}

Código de matriz unidimensional

public class ArrayLoopTest{
public static void main(String []args){
     String[] data ={"2018-09-03,287.5,289.8,286.15,287.3,287.65,1649749.0,4750.35",
                     "2018-08-31,286.25,290.5,285.0,285.5,285.95,3716997.0,10691.41",
                     "2018-08-30,286.45,290.55,284.6,286.05,285.6,3861403.0, 11097.03"};
    for (int i=0;i < data.length;i++) 
    {
        System.out.println(data[i]);
    }
 }}
0
Sharat Chandra 8 sep. 2018 a las 14:01

Bienvenido al mundo de java.

Aquí hay algunas cosas que parece que no estás haciendo bien, ya que sabes que Java es un lenguaje fuertemente tipado. Sin embargo, desde su código, está utilizando un flotante en su matriz. quizás haya declarado que su matriz contendrá solo cadenas.

Más aún, no está declarando su matriz de la manera correcta. Le recomendaré que trabaje en este tutorial rápidamente Arrays in java.

Pero para resolver su problema, puede hacerlo

p

ublic static void main(String []args){
            String[][] data = new String[][]{

                {"2018-09-03","287.5","289.8","286.15","287.3","287.65","1649749.0","4750.35"},
                    {"2018-09-03","287.5","289.8","286.15","287.3","287.65","1649749.0","4750.35"},
                    {"2018-09-03","287.5","289.8","286.15","287.3","287.65","1649749.0","4750.35"},

            };



            for (int i=0;i < data.length;i++) {
                    for (int j = 0; j < data[i].lenght(); i++){
`                        System.out.print(data[i][j] + "  ");
                      }
                      System.out.println("--------------")


            }
        }
1
Oluwatobi Adenekan 8 sep. 2018 a las 14:05