Вы не можете удалить из списка, если вы просматриваете его с циклом «для каждого».
Вы не можете удалить элемент из коллекции, которую вы выполняете. Вы можете обойти это, явно используя Итератор и удалив там элемент. Вы можете использовать Итератор.
Если вы используете код ниже, вы не получите никакого исключения:
private static void removeLalala(Collection<String> c)
{
/*for (Iterator<String> i = c.iterator(); i.hasNext();) {
String s = i.next();
if(s.equals("lalala")) {
c.remove(s);
}
}*/
Iterator<String> it = c.iterator();
while (it.hasNext()) {
String st = it.next();
if (st.equals("lalala")) {
it.remove();
}
}
}
Которое if
принадлежит else
к?
if (a < b)
if (c < d)
a = b + d;
else
b = a + c;
(Очевидно, вы должны игнорировать отступ.)
Это «проблема с зависанием еще».
C / C ++ избавляет от двусмысленности тем, что имеет правило, в котором говорится, что вы не можете иметь if
-without-an- else
в качестве if
-го тела an- if
-с-An- else
.
Неоднозначное другое.
Некоторая информация здесь: http://theory.stanford.edu/~amitp/yapps/yapps-doc/node3.html
Но классический пример:
if a then
if b then
x = 1;
else
y = 1;
vs.
if a then
if b then
x = 1;
else
y = 1;
Я не вижу проблемы для Pascal?
Этот неверный отступ.
if a then
if b then
x = 1;
else
y = 1;
Удаление полуколоны после x = 1 сделает ее правильной с отступом.
Этот правильный отступ
if a then
if b then
x = 1;
else
y = 1;
if (a < b) if (c < d) a = b + d;
. – avakar 24 September 2009 в 21:50else
всегда связывается с ближайшим сопоставлениемif
. – Pavel Minaev 24 September 2009 в 21:58