2014-10-04 2 views
1

Во-первых, несите меня - я всего лишь месяц на Java.Использование for-loop для проверки количества дней в Java

В упражнении меня попросили подтвердить (с испытательным стендом), что с определенного года (х) до определенного года (y), что есть только один день между 31 декабря и 1-м январь. Они предполагают, что я должен использовать for-loop, чтобы он проходил через все годы между нашими x и y годом.

Предустановленный метод, называемый daysTill, уже создан.

До сих пор, я придумал с этим уродливым кусок кода, который не работает:

public void testYearEnd() 
{int i; 
     for(i = 1635; i <=2300; i++); 
      Date date1 = new Date(i, 31, 12); 
      Date date2 = new Date(i, 01, 01); 
      assertEquals(1, date1.daysTill(date2)); 
} 

Может кто-нибудь родит точно указать, где мой код неудачу на меня?

+2

Remove ',' 'после for'; добавлять фигурные скобки вокруг тела цикла (отступы на Java не значительны). –

+0

Cheers, Джефф. Нужно войти в этот набор разума. – Aphex

+1

Два вопроса в стиле nits: это «медведь», а не «голый» в «голом со мной»/«может кто-то нести»; «спасибо», а подписи не должны быть в вопросах (вы можете поблагодарить, приняв и/или повысив полезные ответы, и ваше имя уже на вопрос). Вы можете отредактировать вопрос, если хотите. (И добро пожаловать в переполнение стека!) –

ответ

2

Две проблемы здесь: у вас есть бродячий ;, который заканчивается вашим заявлением без тела, что делает его неготовным и отсутствующим скобками вокруг предполагаемого тела. (Без ; это не будет компилироваться, так как декларация даты не является инструкцией.)

Вы также можете перенести объявление i в оператор for (вы не могли раньше, потому что завершение for-statement рано из-за ;, поэтому i не был определен для конструкторов Date).

Код должен быть

public void testYearEnd() { 
    for (int i = 1635; i <= 2300; i++) { 
     Date date1 = new Date(i, 31, 12); 
     Date date2 = new Date(i, 01, 01); 
     assertEquals(1, date1.daysTill(date2)); 
    } 
} 
+0

Спасибо! У этого определенно были некоторые ошибки начинающего. Код хороший и компилирующийся сейчас, но тестовый блок все равно не примет его. Это дает мне ошибку 12, вернувшись к исходному коду класса «Дата», который работает очень хорошо, поэтому в моем коде все еще есть логическая проблема. Думаю, мне нужно будет самостоятельно разобраться. Спасибо, в любом случае! – Aphex