2016-10-05 5 views
1
public class Assignment1{ 
    public static void main(String[] args) { 
     final int MAX_ROWS = 5 ; 
     for(int row = 1; row<= MAX_ROWS; row++) ; 
     {for (int star = 1; star <= row ; star++); } 

почему затмение сказал мне: «строка не может быть решена с переменной» (строки в последней строке)строка не может быть решена с переменной

+2

Подсказка: в программировании детали важны. Даже тонкие вещи, где вы размещаете ваши; персонажи! – GhostCat

+0

Объявите строку = 1 перед первым циклом. Ваша переменная строки является локальной переменной, и ее область ограничена только первым циклом. Он не виден во втором цикле – Nimesh

+0

Вы завершаете свой первый цикл до начала второго. Это может быть не предназначено. –

ответ

4
for(int row = 1; row<= MAX_ROWS; row++) ; 

Remove; после того, как для

1

Если вы приглядитесь

for(int row = 1; row<= MAX_ROWS; row++) ; <-- 

который равен

for(int row = 1; row<= MAX_ROWS; row++){ 
} 

Дополнительный ; причиной для закрытия для контекста петли сразу же в этой строке. Таким образом, контекст строки заканчивается в этой строке.

Удалить ;. Он должен работать.

+1

Просто интересно: не будет ли здравомыслящая вещь комментировать и сделать «закрытие опечатки»? – GhostCat

+0

@GhostCat Nope. У ОП есть основное недоразумение:. Если вы посмотрите на его другие петли, он сделает то же самое. –

+0

Да; и у нас есть вопрос «опечатки», который теперь имеет 6 или 7 ответов ... по совершенно нет веской причине. Комментарий и быстрое «закрытие» лучше служили бы * сообществу; ИМХО. – GhostCat

2

, потому что точка с запятой в конце 1-го по петле убивает объем переменной строки ..

for(int row = 1; row<= MAX_ROWS; row++) ; // <-- remove that ; 
2

То из-за запятой после того, как для

public static void main(String[] args) { 
final int MAX_ROWS = 5 ; 
for(int row = 1; row<= MAX_ROWS; row++) ; 
{ 
for (int star = 1; star <= row ; star++); 
} 

Полу толстой кишки приводит к завершению цикла строки, поэтому область действия if завершена, поэтому строка не отображается во втором цикле. Удалить точку с запятой и код будет работать.

2

У вас есть избыточная точка (точка: точка с запятой) (;) после первого for. Эта точка с запятой завершает блок for, а так как row определяется только в пределах, вы получаете ошибку на следующем блоке. Просто удалите его, и все должно быть в порядке:

public class Assignment1{ 
    public static void main(String[] args) { 
     final int MAX_ROWS = 5 ; 
     for (int row = 1; row<= MAX_ROWS; row++) 
     // Semicolon removed here --------------^ 
     { 
      for (int star = 1; star <= row ; star++); 
      // And you probably want to remove this^
      // And have a sensible body in this loop too. 
     } 
Смежные вопросы