所以我参加了AP计算机科学A,我需要一些帮助我参加了活动28,我有这个问题:
removeExtension方法用于输入名称或3位数的分机号码(以字符串的形式显示),并从extensions数组中删除它找到的与名称或扩展名匹配的第一个条目(或两者) )。如果发生这种删除,则扩展数组的大小减少1.
与活动27.1中一样,如果唯一的区别在于使用大写或小写字母,则在比较名称时应注册匹配。所以" PETER"和彼得"应该匹配,而彼得"和#34; Pete"不应该。
完成removeExtension方法的定义:
public class MainClass{
public static PhoneExtension[] extensions = new PhoneExtension[]{
new PhoneExtension("Christine", "763"),
new PhoneExtension("Janice", "464"),
new PhoneExtension("Jon", "564"),
new PhoneExtension("Peter", "760"),
new PhoneExtension("Nicholas", "564"),
new PhoneExtension("Michael", "465"),
new PhoneExtension("Ryan", "564"),
new PhoneExtension("Pamela", "467"),
new PhoneExtension("Janice", "999"),
new PhoneExtension("Christine", "763")
};
public static void printDirectory(){
for (PhoneExtension ext : extensions)
System.out.println(ext);
}
public static void removeExtension(String t){
//My code starts here.
PhoneExtension[] temp = new PhoneExtension[extensions.length - 1];
int index;
for (int i = 0; i < extensions.length - 1; i++){
if (t.toLowerCase().equals(extensions[i].getName().toLowerCase()) || t.equals(extensions[i].getExtension())){
index = i;
continue;
}
}
for (int i = 0; i < index; i++){
temp[i] = extensions[i];
}
for (int i = index; i < temp.length - 1; i++){
temp[i + 1] = extensions[i];
}
extensions = temp;
//And ends here.
}
public static void main(String[] args){
removeExtension( "Peter" );
printDirectory();
}
}
这会抛出此错误:
MainClass.java:75: error: variable index might not have been initialized
for (int i = 0; i < index; i++){
^
需要注意的一点是:PhoneExtension类没有显示,但它有一个getName和getExtension方法,它返回它的名称或扩展名。它的构造函数如下所示:PhoneExtension(String name,String extension)。我不知道为什么我们没有使用ArrayLists,看起来它可以省去一些麻烦,但我可能会遗漏一些阻止我们使用它们的东西......
答案 0 :(得分:0)
您需要初始化局部变量index
。如果i < extensions.length - 1
永远不为真,那么index
将无法初始化,这就是编译器抱怨的原因。
执行此操作:int index = 0
。