2013-03-26 4 views
-2

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

Это мой код, но он не принимает его, говоря, что есть ошибки компиляции.

public static boolean anyEmptyObject(object[] objects){ 
for(int k = 0;k<object.length; k++){ 
     if (objects[k].getEmpty()==true){ 
      return true;} 
     else {return false;} 
} 
} 

(getEmpty уже объявлен метод, который возвращает, если объект является пустым или нет)

не уверен, где моя ошибка, как это кажется нормально? могут быть мои скобки?

Ошибка просто

The system has detected compilation errors. This could be caused by: 
Missing semicolon ; at the end of a statement. 
Unclosed braces {}. 
Unclosed parentheses(). 
Unterminated string literals "". 
Invalid method signature. 
Missing return statement. 
Redeclared variable or data member. 
etc. 
+3

Что сообщение об ошибке компилятора? Скорее всего, если вы действительно прочитаете его, он точно скажет вам, в чем проблема. –

+0

Какая ошибка вы получаете от компилятора? – Todd

+0

* "и т. Д." * Является ли это копирование/вставка или редактирование? Компилятор обычно сообщает номера строк. –

ответ

2

Похоже, вы положили object.length вместо objects.length в вашем for цикле, и она должна быть заглавная O в Object[] objects

Кроме того, если вы вернетесь, то это будет в значительной степени завершите цикл. Это не то, что вы хотите.

ПОМНИТЕ: Если вы положили ;, это означает, что это конец линии. Ваш отступы собирается пропустить кронштейн после последних два ;

public static boolean anyEmptyObject(Object[] objects){ 
     for(int k = 0;k<objects.length; k++){ 
      if (objects[k].equals(null)){ 
       return true; 
      } 
     } 
     return false; 
    } 

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

+0

Это доставит меня куда-нибудь, придется немного пересмотреть мой код и сработает. Благодаря ! – aiuna

+0

У вас есть; а затем скобки}. ; закончит линию и пропустит скобки. –

+0

Понял, заменил ваше заявление на мое, и это сработало! – aiuna

0

Я вижу две ошибки (и я рекомендую вам внимательно прочитать ошибки компиляции - они часто полезны)

  1. условие цикла должно быть на objects, не object

  2. метод не гарантируется получение оператора return (компилятор не знает, всегда ли вы входите в цикл). Кроме того, логика неверна. Если вы переместите часть return false из цикла, она будет логически и семантически корректной.

Кроме того, если петля на объекты типа java.lang.Object, не ожидаем, что они имеют метод с getEmpty().

1

Каков тип объекта в массиве? Вы должны бросить объект первым, прежде чем вы можете вызвать метод члена, как показано ниже

if (((YouClass)objects[k]).getEmpty()==true) 
Смежные вопросы