2013-03-12 2 views
-5

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

Теперь добавьте два общих методов для получения и установки значения этого нового массива: общественности недействительным Снимите крышку (интермедиат thisCol, внутр thisRow) Метод раскрытия изменяет состояние указанного квадрата на значение false. В противном случае, если входные координаты находятся за пределами минного поля или квадрат уже обнаружен, он ничего не делает.

public boolean isCovered (int thisCol, int thisRow) Метод isCovered возвращает true, если указанный квадрат покрыт. В противном случае, если входные координаты находятся за пределами минного поля или квадрат не покрыт, он возвращает false.

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

public void uncover(int thisCol, int thisRow) { 
    if(thisCol <0 || thisRow < 0) 
     return null; 
    if(thisCol>=numCols || thisRow>=numRows) 
     return null; 
} 

public boolean isCovered(int thisCol, int thisRow){ 
    if(thisCol >0 || thisRow > 0) 
     return true; 
    if(thisCol>=numCols || thisRow>=numRows) 
     return true; 
    else; 
     return null; 
} 
+0

В вашем булево вы не возвращаете ложь. Вы возвращаете null. Логическое значение Boolean не может быть нулевым. – CathalMF

+0

Вы не можете вернуть что-то, если вы возвращаете тип, недействительным. Вы можете вернуться. –

+0

can not void return null –

ответ

0

Первый метод: -

public void uncover(int thisCol, int thisRow)

Это метод недействительным. это означает, что вы не можете вернуть любое значение (null, true or false)

Второй метод: -

public boolean isCovered(int thisCol, int thisRow)

вы не можете вернуть нуль, потому что возвращаемый тип булево. так что это должно быть return false;

выше изменений необходимо исправить. После этого вы можете попробовать с кодом.

0

Мое понимание (на C#) заключается в том, что «public void» означает, что вы НЕ возвращаете ничего вызывающему. Поэтому в методе «раскрыть» я ожидаю, что он даст вам ошибку при попытке вернуть Null.

Кроме того, на втором я ожидаю увидеть также ошибку в строке «return null», так как ваш тип возврата является логическим.

0

Предполагая, что массив объявлен внутри класса в variabile:

private boolean thisArray[][]; 

Вот правильный uncover функции:

public void uncover(int thisCol, int thisRow) { 
    if(thisCol < 0 || thisRow < 0) return; 
    if(thisCol >= numCols || thisRow >= numRows) return; 
    thisArray[thisCol][thisRow] = true; 
} 

Исправления:

  1. геЬигп без значений , потому что функция возвращает void
  2. Assignemnt значения массива в последней строке: thisArray[thisCol][thisRow] = true

Вот правильная isCovered функция:

public boolean isCovered(int thisCol, int thisRow){ 
    if(thisCol < 0) return false; 
    if(thisRow < 0) return false; 
    if(thisCol >= numCols) return false; 
    if(thisRow >= numRows) return false; 
    return thisArray[thisCol][thisRow]; 
} 

Исправления:

  1. Если координаты находятся вне квадратов он должен вернуть false, вы возвращался true;
  2. Вы не хватало, чтобы проверить эффективное значение массива, что я добавил в последней строке: return thisArray[thisCol][thisRow];
Смежные вопросы