Я компьютерные науки студент работает на уступках со следующими инструкциями:Использование статического класса как массив объектов
«Разработка приложения, которое будет считывать входные текстовую строку и подсчет количества элементов а, B, C и т. Д. ... вы создадите класс Letter, который будет содержать букву и число вхождений и класс LetterList, который может быть статическим массивом объектов Letter. "
У меня возникли проблемы с выяснением, как использовать мой статический класс, содержащий массив объектов Letter. У меня есть мои классы, написанные следующим образом:
public class Letter {
private char letter;
private int count;
//constructor and getters and setters omitted
public void increment() {
count++;
}
static class LetterList {
private static final int MAX = 26;
private static Letter[] list;
private static int size = 0; //to prevent null pointer exception
public LetterList() {
list = new Letter[MAX];
}
public static int length() {
return size;
}
public static void addLetter(Letter letter) {
boolean added = false;
for (int i = 0; i < MAX && !added; i++) {
if (list[i] != null) {
//if the letter exists in the array increment the count
if (letter.getLetter() == list[i].getLetter()) {
list[i].increment();
added = true;
}
} else {
//if it doesn't exist add it
list[i] = letter;
added = true;
size++;
}
}
}
public static Letter getElement(int idx) {
return list[idx];
}
public static void clearList() {
size = 0;
}
}
}
Поскольку этот класс является статическим, требуется конструктор? Когда я хочу добавить элементы в мой массив Letter [] в моем классе LetterList, что это правильный способ? Было бы лучше иметь мой класс LetterList самостоятельно? Я ценю любую помощь и благодарю заранее.
Я не верю, что вам понадобится конструктор в этом случае ... просто наверху 'private static Letter [] list = new Letter [MAX];'. Поэтому он действительно статичен, потому что для того, чтобы ваш код работал прямо сейчас, вам нужно будет вызвать конструктор. Если вы хотите добавить письмо в свой 'Letter []' просто do ... 'LetterList.addLetter (....);'. На мой взгляд, вы должны отделить эти два класса. – 3kings
Статический класс не требует конструктора. Я думаю, что 'Map' будет служить вашей потребности лучше, чем массив. –
c0der
На этом уровне я счел бы разумным следовать рекомендациям профессора, в этом случае статический массив объектов 'Letter' (для производственного кода я тоже буду делать что-то еще, но оставлю это сейчас). –