变量索引可能尚未初始化问题

时间:2016-02-28 15:23:38

标签: java arrays sorting

所以我参加了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,看起来它可以省去一些麻烦,但我可能会遗漏一些阻止我们使用它们的东西......

1 个答案:

答案 0 :(得分:0)

您需要初始化局部变量index。如果i < extensions.length - 1永远不为真,那么index将无法初始化,这就是编译器抱怨的原因。

执行此操作:int index = 0