2013-02-14 3 views
0

У меня есть этот if-statement, который при проверке с помощью JOptionPane.showMessageDialog (как видно в верхней части кода) возвращает false, но блок все еще выполняется. Я не вижу, что мне делать по-другому.

Переменные:Java boolean if-statement messes up

  • с = GregorianCalendar
  • S = Строка
  • ч = HashMap-массив - String, Date
  • oldGoods1, 2 и 3 = HashMaps - String, Date

Код:

JOptionPane.showMessageDialog(null, c.after((Date) h[counter].get(s))); 
if(c.after((Date) h[counter].get(s))); //this line 
{ 
    Calendar today = Calendar.getInstance(); 
    if(today.after((Date) h[counter].get(s))) 
    { 
    GoodsList.removeDate(s, (Date) h[counter].get(s)); 
    } 
    if(!oldGoods1.containsKey(s)) 
    { 
    oldGoods1.put(s, (Date) h[counter].get(s)); 
    } 
    else if(!oldGoods2.containsKey(s)) 
    { 
    oldGoods2.put(s, (Date) h[counter].get(s)); 
    } 
    else if(!oldGoods3.containsKey(s)) 
    { 
    oldGoods3.put(s, (Date) h[counter].get(s)); 
    } 
} 

Спасибо заранее Highace2

+9

У вас есть точка с запятой после вашего оператора if. Остальная часть вашего кода выполняется как блок. Довольно распространенная ошибка начинающего. – Perception

ответ

9
if(c.after((Date) h[counter].get(s))); // The `;` is the culprit. Remove it. 

Существует точка с запятой в конце if statement, который завершает if statement там только, и следующий блок, который только локальный блок, всегда выполняется независимо от того, условие оценивается.

+1

О, черт возьми ... Я сидел и искал эту ошибку через 3 часа! В любом случае спасибо за помощь. – Highace2

Смежные вопросы