Нет Статей, получив Array

Все я функционирует правильно подбирая только стоимость array, но подобрав данные двух, которые то, что я хочу, мне не хватает данных, как я могу делать это, чтобы иметь их в том же activity:

@Override
    protected String doInBackground(String... url) {

        urlPost = url[0];
        try {
            jsonObjectDesignPosts = JsonParser.readJsonFromUrl(urlPost);
            postNumber = jsonObjectDesignPosts.getJSONArray("golesLocal").length();
            jsonArrayDesignContent = jsonObjectDesignPosts.getJSONArray("golesLocal");

            postNumber = jsonObjectDesignPosts.getJSONArray("golesVisitante").length();
            jsonArrayDesignContent = jsonObjectDesignPosts.getJSONArray("golesVisitante");

            sharedPreferences.edit().putString("DESIGN", jsonArrayDesignContent.toString()).apply();
            designNombre_local = new String[postNumber];
            designMinuto_local = new String[postNumber];

            designNombre_visitante = new String[postNumber];
            designMinuto_visitante = new String[postNumber];


            for (int i = 0; i < postNumber; i++) {

                designNombre_local[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal").getJSONObject(i).getString("nombre")).toString();
                designMinuto_local[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal").getJSONObject(i).getString("minuto")).toString();
                designNombre_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante").getJSONObject(i).getString("nombre")).toString();
                designMinuto_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante").getJSONObject(i).getString("minuto")).toString();

            }

        } catch (IOException | JSONException e) {
            e.printStackTrace();
            designNombre_local = new String[0];
            error = true;
        }
        return null;
    }

@Override
protected void onPostExecute(String result) {

    designs = new ArrayList<>();


    if (designNombre_local.length != -1) {


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

            designs.add(new Goles(designNombre_local[i],designMinuto_local[i],
                    designNombre_visitante[i],designMinuto_visitante[i]));
        }
    }
    if (error) {
        Toast.makeText(getActivity(), "Error de conexión", Toast.LENGTH_LONG).show();
    }

Я догадался, что он показывает нижнее число статей, объясняюсь, в партии пометили помещения 5 и посетители 3, так как он показывает только три результата каждой команды. Из чего он проистекает?

6
задан 04.01.2016, 09:26
3 ответа

В dimensionar вся стоимость ты получишь от твоего array этих считая, что postNumber у него есть та же стоимость для помещения и посетитель, aunqúe golesLocal они были в конце концов этими более или менее беря стоимость golesVisitante:

postNumber = jsonObjectDesignPosts.getJSONArray("golesLocal").length();
postNumber = jsonObjectDesignPosts.getJSONArray("golesVisitante").length();

Проблема происходит здесь:

    for (int i = 0; i < postNumber; i++) {

        designNombre_local[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal").getJSONObject(i).getString("nombre")).toString();
        designMinuto_local[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal").getJSONObject(i).getString("minuto")).toString();
        designNombre_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante").getJSONObject(i).getString("nombre")).toString();
        designMinuto_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante").getJSONObject(i).getString("minuto")).toString();

    }

даже у тебя могла бы быть ошибка:

ArrayIndexOutOfBoundsException

Как решение, было бы нужно брать стоимость postNumber golesLocal и другой postNumber для golesVisitante, это для dimensionar правильное получение стоимости, примера:

//Obtiene valores Local.
    postNumber = jsonObjectDesignPosts.getJSONArray("golesLocal").length();


        for (int i = 0; i < postNumber; i++) {

            designNombre_local[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal").getJSONObject(i).getString("nombre")).toString();
            designMinuto_local[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal").getJSONObject(i).getString("minuto")).toString();

        }

//Obtiene valores Visitante.
    postNumber = jsonObjectDesignPosts.getJSONArray("golesVisitante").length();

        for (int i = 0; i < postNumber; i++) {

            designNombre_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante").getJSONObject(i).getString("nombre")).toString();
            designMinuto_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante").getJSONObject(i).getString("minuto")).toString();

        }
1
ответ дан 24.11.2019, 15:01

Проблему создала эта здесь postNumber в этом изменчивом ассигновании / переассигновании.

pseudo code:

//..
//se marcan 5 goles
postNumber = jsonObjectDesignPosts.getJSONArray("golesLocal").length();

//ahora se marcan 3   
postNumber = jsonObjectDesignPosts.getJSONArray("golesVisitante").length();

и сейчас здесь все те показывают себе->

for (int i = 0; i < postNumber; i++) {

     designNombre_local[i]     = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal").getJSONObject(i).getString("nombre")).toString();
     designMinuto_local[i]     = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal").getJSONObject(i).getString("minuto")).toString();
     designNombre_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante").getJSONObject(i).getString("nombre")).toString();
     designMinuto_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante").getJSONObject(i).getString("minuto")).toString();

}

последнюю стоимость, которую я распределяю ему, что его 3 например. (только он повторит 3 раза поэтому в этом случае тебе не хватает голов команды)

Ждал пойми меня, ты можешь решать это многих способов, если ошибка - тот, что я показываю тебе (я это не смог testear), ты мог бы создавать две переменные postNumberLocal и postNumberVisitiante и они повторять из-за separadao костлявая один for например для каждого varariable, но только это идея.

for (int i = 0; i < postNumberLocal; i++) {

     designNombre_local[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal")
                               .getJSONObject(i)
                               .getString("nombre")).toString();

     designMinuto_local[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal")
                               .getJSONObject(i)
                               .getString("minuto")).toString();

}

for (int i = 0; i < postNumberVisitiante; i++) {


     designNombre_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante")
                               .getJSONObject(i)
                               .getString("nombre")).toString();

     designMinuto_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante")
                               .getJSONObject(i)
                               .getString("minuto")).toString();

}

Сейчас мы налаживаем новые переменные

//.. 
//se marcan 5 goles
postNumberLocal      = jsonObjectDesignPosts.getJSONArray("golesLocal").length();
//..
//ahora se marcan 3   
postNumberVisitiante = jsonObjectDesignPosts.getJSONArray("golesVisitante").length();
//..

И также во время определения tamaГ±o arrays, что ты используешь что-либо подобное:

//..

..//
designNombre_local     = new String[postNumberLocal];
designMinuto_local     = new String[postNumberLocal];
designNombre_visitante = new String[postNumberVisitante];
designMinuto_visitante = new String[postNumberVisitante];
..//
1
ответ дан 24.11.2019, 15:01
  • 1
    adetenido приложение, logcat: java.lang. ArrayIndexOutOfBoundsException: length=3; index=3 – Rafel C.F 05.01.2016, 23:52

Вы комментируете мне->

adetenido приложение, logcat: java.lang. ArrayIndexOutOfBoundsException: length=3; index=3

это происходит главным образом, потому что пробует соглашаться вне пределов array (в этом случае) простая иллюстрация:

  • tamaГ±o Вашего array давайте говорить, что он 3.
  • И Вы попробованы согласиться на положение (индекс) 3.

Выглядите мне на тебя смоги думать, что он хорошо, но во многих языках индексированный - с 0, это означает, что он считает с 0.

 para la longitud        el indice maximo es 
    1                          0
    2                          1
    3                          2

.

Имея в виду предыдущее Вы использует в каком-то моменте для longitud = 3 доступ к indice 3 array, как Вы можете видеть в предыдущей таблице максимум для 3, он 2, отсюда Ваша ошибка.

Сейчас, как решать это я не, где случается точно ошибка в простой вид основываясь на log, который он показывает, так как я не могу видеть aque линию, относится, но я думаю, что понимая предыдущее Вы можете спорить, где эта ошибка, (в выводе log, очень вероятно, что он показывает ему число, мы сказали 10 так как Вы dirije в линию десять из Вашего кода и поисков ошибка где-то здесь, это был бы простой способ находить ошибку).

, Но если я должен говорить, где я думаю, что он, ошибку, возможно, что он в этой части кода:

  if (designNombre_local.length != -1) {


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

        designs.add(new Goles(designNombre_local[i],designMinuto_local[i],
                designNombre_visitante[i],designMinuto_visitante[i]));
    }

более конкретно - эта линия:

designNombre_visitante [i], designMinuto_visitante [i]));

возможно, что tamaГ±o от designNombre_visitante он отличается (больше pequeГ±o), что designNombre_local.length отсюда следует, что в какой-то точке переменная i попробовала соглашаться вне индекса array designNombre_visitante

это решать точно, ошибка быть этой, имея в виду каков - мотив ошибки, он был бы должен знать, что то, что Вы этот intendo делать с:

designs.add(new Goles(designNombre_local[i],designMinuto_local[i],
                    designNombre_visitante[i],designMinuto_visitante[i]));

, И которого способ он использован (обрабатывая информацию или налаживая это каким-то образом для того, чтобы не попробовало соглашаться на положение, не воспользованное array).

P.D: как заметь также я скажу ему, что Вы можете понимать, что designNombre_local.length, simpre он больше, что designNombre_visitante,

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

, но не, если это Ваш intentecion, но не быть такими иметь это в виду, когда он сделает изменения, чтобы решать предыдущую ошибку.

1
ответ дан 24.11.2019, 15:01
  • 1
    Правда не, но без designs.add (new Голы (designNombre_local [i], designMinuto_local [i], designNombre_visitante [i], designMinuto_visitante [i])); внутри protected void onPostExecute (String result) {он не показывает мне никакой стоимости. Моя электронная почта Rafelcf@gmail.com – Rafel C.F 06.01.2016, 14:58