Member 13491066 Ответов: 1

Эй, кто-нибудь может помочь мне с исправлением моего метода deletespherocylinder, я не знаю, что с ним не так.


Вот что у меня сейчас есть:

public Spherocylinder deleteSpherocylinder(String labelIn)
{
   Spherocylinder result = null;
   int index = 0;

   for (int i = 0; i < elements; i++)
   {
      if (object[i].getLabel().equalsIgnoreCase(labelIn))
      {
         for (int j = i; j < elements - 1; j++)
         {
            object[j] = object[j + 1];
         }
         elements--;
         result = object[elements];
         break;
      }


   }

   return result;
}


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


*Метод deleteSpherocylinder класса SpherocylinderList: метод не вернул правильный удаленный сфероцилиндр.

*Метод deleteSpherocylinder класса SpherocylinderList: метод не вернул правильный удаленный сфероцилиндр при использовании корпуса другого типа (напр. небольшой пример).

Я запустил свой код, и он делает все это и работает идеально без каких-либо проблем, может ли кто-нибудь сказать мне, если что-то не так с моим методом, любая помощь будет очень признательна.

Что я уже пробовал:

я пытался:

public Spherocylinder deleteSpherocylinder(String labelIn)
{
   Spherocylinder result = null;
   int index = 0;

   for (int i = 0; i < elements; i++)
   {
      if (object[i].getLabel().equalsIgnoreCase(labelIn))
      {
         for (int j = i; j < elements - 1; j++)
         {
            object[j] = object[j + 1];
            result = object[j];
         }
         object[elements - 1] = null;
         elements--;
         result = object[elements];
         break;
      }


   }

   return result;
}


но он возвращает null вместо удалить(перезаписать) массива. До сих пор этот код ниже, кажется, делает именно то, что я хочу, но программное обеспечение для оценки не нравится, и вот где я запутался.


public Spherocylinder deleteSpherocylinder(String labelIn)
{
   Spherocylinder result = null;
   int index = 0;

   for (int i = 0; i < elements; i++)
   {
      if (object[i].getLabel().equalsIgnoreCase(labelIn))
      {
         for (int j = i; j < elements - 1; j++)
         {
            object[j] = object[j + 1];
            //result = object[j];
         }
         //object[elements - 1] = null;
         elements--;
         result = object[elements];
         break;
      }


   }

   return result;
}

1 Ответов

Рейтинг:
2

OriginalGriff

Используйте отладчик - поставьте точку останова на линию:

for (int j = i; j < elements - 1; j++)

И выясните из этого, какой именно элемент вы удаляете. Затем следуйте коду и узнайте, какой элемент вы возвращаете.

Довольно очевидно, что не так, и почему - и отладчик покажет вам, если вы посмотрите внимательно.


Member 13491066

Эй, я, кажется, не могу понять, не могли бы вы быть более конкретными.

OriginalGriff

Что вам показал отладчик?