2013-02-23 5 views
-1

Итак, я выполняю назначение программирования, а назначение - написать программу, которая будет печатать календарь данного месяца и года. Я пишу класс, чтобы отслеживать имя дня недели (пн, Вт, ср и т. Д.), И я пытаюсь дать ему 3 параметра: имя дня, строка, int, чтобы ссылаться на третий, массив всех рабочих дней. мой код открытия, как это таким образом:Инициализация массива в определение класса

public class Day 
{ 

private String weekDay; 
private String[] weekDays; 
private int dayIndex; 

weekDays = new String[7]; 

weekDays[1] = "Sunday"; 
weekDays[2] = "Monday"; 
weekDays[3] = "Tuesday"; 
weekDays[4] = "Wednesday"; 
weekDays[5] = "Thursday"; 
weekDays[6] = "Friday"; 
weekDays[7] = "Saturday";` 

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

Оригинальный дизайн, предложенный моим профессором, не имел индекса, только переменные weekDay и weekDays[]. Я не был уверен, что было предназначено для массива вообще, поэтому я решил, что буду использовать индекс и отслеживать день численно таким образом. Очевидно, что он не работает. Итак, один: что не так с моим решением выше, и два: Кто-нибудь знает, каково было первоначальное намерение класса Day с этими двумя параметрами? Класс «Идея дня» должен был помочь выяснить, в какой день недели начался конкретный месяц того года, но я не знаю, как это сделать.

Спасибо. Извините, если я совершил какие-либо нарушения этикета.

+1

Не забывайте, что массивы индексируются от 0 (не 1) на Java. –

+0

И что доступ к weekDays на 7 будет генерировать IndexOutOfRangeException – chrisw

ответ

0

Почему бы вам не попробовать:

private String[] weekDays = new String[] {"Sunday", "Monday", 
          "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; 
0

Массивы равны нулю на основе так, начиная с 1, а не 0 произведет ArrayIndexOutOfBoundsException при попытке присвоить последней String:

weekDays[7] = "Saturday";` 

Кроме того, не декларативные утверждения должны быть в методе, конструкторе или статическом инициализаторе, а не в блоке класса.

Вместо присвоения значения по отдельности, вы можете объявить weekdays включить значения:

private String[] weekDays = { "Sunday", "Monday", ... }; 

Такой подход не требует указания значения индекса массива.

+0

Хорошо, я попробую это последнее решение декларации и посмотрю, работает ли это. Это то, чего я хотел добиться в любом случае. Благодарю. Надеюсь, я еще не столкнулся с проблемами позже. – user1786288

1

Какие ошибки вы получаете? Я не java, но не должен ли ваш массив начинать с 0?

weekDays[0] = "Sunday"; 
+0

Да, это была не моя проблема. Думаю, у меня это есть. – user1786288

+0

классный, есть пара алгоритмов, которые определяют день недели, используя дату. см. ссылку: http://en.wikipedia.org/wiki/Determination_of_the_day_of_the_week –

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