我是一名计算机科学专业的学生,按照以下说明从事作业:
“开发一个应用程序,它将读取输入文本字符串并计算A,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;
}
}
}
由于此类是静态的,是否需要构造函数?当我想在LetterList类的Letter []数组中添加元素时,正确的方法是什么?单独使用我的LetterList类会更好吗?我提前感谢任何帮助和感谢。
答案 0 :(得分:0)
由于这个类是静态的,是否需要构造函数?
不,它是可选的,但构造函数不是初始化静态字段的最佳位置,所以在这种情况下你应该把它留下来。如果那是我,我也会遵循@ 3kings的建议,因为当声明中的列表被实例化时,我发现它更具可读性。对于构造函数,一个更好的选择(尽管可能稍微高级)是一个不执行任何操作的私有构造函数。如果有人某天试图实现类(new
),这将会发现,这将是一个错误(或至少是徒劳的)。
当我想在LetterList中的Letter []数组中添加元素时 上课,有什么方法?
你应该做什么,虽然可能需要一些思考来说服自己。我可能会把它带到for循环之外并通过if (! added)
保护它(以避免在那里插入一个字母)并将其添加到索引size
(这应该是第一个可用的插槽)。还要注意溢出:如果size
已经MAX
,则阵列中不再有空间。
单独使用我的LetterList类会更好吗?
我在想同样的事。这是一个品味问题,但我并没有真正意识到将它放在Letter
课程中。
你走在正确的轨道上,你提出了很好的问题。