JAVA GET API - 2D Array, невозможно получить? - PullRequest
0 голосов
/ 08 сентября 2018

Я получаю переменные данных через такой API (обратите внимание на квадратные скобки):

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

Что я делаю неправильно в приведенном ниже сценарии?Я новичок в Java и должен напечатать этот блок в таблице.Пожалуйста, помогите мне, спасибо заранее

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]);
        }
     }
}

Ответы [ 4 ]

0 голосов
/ 08 сентября 2018

Это может быть решено двумя способами, одномерным и двухмерным, если вы хотите поместить разные типы данных в один массив, что невозможно в java. Вы можете поместить только один тип данных в определенный массив типа.

Код двумерного массива:

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();
    }
    }

 }}

Код одномерного массива

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 голосов
/ 08 сентября 2018

При использовании массива имейте в виду, что структура данных массива может содержать данные только одного типа. По сути это означает, что если массив объявлен как String, то он может иметь только данные типа String.

Таким образом, вы можете использовать следующий код для определения и печати 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])+",");

    }
}

Edit:

Вы можете использовать библиотеку com.google.gson, как показано ниже, чтобы получить 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 голосов
/ 08 сентября 2018

Добро пожаловать в мир Java.

Вот некоторые вещи, которые у вас, похоже, не очень хорошо работают, так как вы знаете, что Java - это строго типизированный язык. Однако из вашего кода вы используете float в вашем массиве. возможно, вы объявили, что ваш массив будет содержать только строки.

Более того, вы не правильно объявляете свой массив. Я рекомендую вам быстро пройти этот урок Массивы в Java .

Но чтобы решить вашу проблему, вы можете сделать это вместо

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


            }
        }
0 голосов
/ 08 сентября 2018

Это не скомпилируется, так как ваш массив имеет неправильный формат и переменная i не определена. Вам нужно перебрать элементы в каждом подмассиве и распечатать их.

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");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...