所以我要帶AP計算機科學,我需要一些幫助我在活動28,我有這樣的疑問:變量指數可能沒有初始化的問題
的removeExtension方法的目的是輸入一個名稱或3位數的分機號碼(以字符串的形式呈現),並從extensions數組中移除它找到的第一個與名稱或分機(或兩者)匹配的條目。如果發生這種刪除,則擴展數組的大小減1。
與活動27.1中一樣,比較名稱時應該註冊匹配項,如果唯一區別是使用大寫或小寫字母。所以「彼得」和「彼得」應該匹配,而「彼得」和「彼得」不應該。
完成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,似乎可以節省一些麻煩,但我可能會錯過一些讓我們無法使用它們的東西...
如果第一個循環中的if語句失敗index語句不會被初始化,編譯器會看到併發出錯誤 – Ramanlfc
錯誤消息告訴你到底發生了什麼錯誤 - 所以初始化變量。這個問題的關鍵是仔細閱讀所有的錯誤信息,並試圖弄清楚他們告訴你什麼。如果您遇到困難,請在此網站上搜索錯誤消息,因爲很可能以前有人問過這類問題。 –
@HovercraftFullOfEels是的我看到錯誤,變量應該在for循環中初始化... – GusN