#java #arrays
#java #массивы
Вопрос:
В настоящее время я сталкиваюсь с этой ошибкой и не знаю, почему это происходит. Когда я пытаюсь добавить значение в свой массив, появляется эта ошибка, и я не знаю, почему и как.
Это та часть кода, в которой я получаю ошибку:
class DateFormatSymbols{
String[] monthNames = new String[11];
String[] weekDays = new String[6];
monthNames[0] = "January";
}
Это весь код, он еще не завершен из-за этой ошибки.
public class Calendar {
private static int day;
private static int month;
private static int year;
public static void main(String[] args) {
}
public static int getDay() {
return day;
}
public static void setDay(int day) {
Calendar.day = day;
}
public static int getMonth() {
return month;
}
public static void setMonth(int month) {
Calendar.month = month;
}
public static int getYear() {
return year;
}
public static void setYear(int year) {
Calendar.year = year;
}
}
class DateFormatSymbols{
String[] monthNames = new String[11];
String[] weekDays = new String[6];
monthNames[0] = "January";
}
Комментарии:
1. Вы не можете определить поле таким образом
monthNames[0] = "January";
в классеclass DateFormatSymbols
. В принципе, для этого нужен какой-то блок.
Ответ №1:
У вас есть оператор в теле класса.
class DateFormatSymbols{
String[] monthNames = new String[11]; <-- Field declaration with an initializer
String[] weekDays = new String[6];
monthNames[0] = "January"; // <-- Statement
}
Вы могли бы переместить оператор в конструктор.
class DateFormatSymbols{
String[] monthNames = new String[11];
String[] weekDays = new String[6];
DateFormatSymbols() { // <-- Constructor
monthNames[0] = "January";
}
}
Или вы могли бы поместить его в блок инициализатора экземпляра.
class DateFormatSymbols{
String[] monthNames = new String[11];
String[] weekDays = new String[6];
{ // <-- Initializer block called for each instance
monthNames[0] = "January";
}
}