我是一個初學java程序員,我做了一些研究,但我不明白如何將它應用到我的程序。爲什麼我在我的輸入中得到NullPointerException?
當我運行我的程序時,我得到一個NullPointerException
,因爲我輸入第一個IP地址的暱稱。爲什麼?
代碼中的隔離行是我得到異常的地方。
我是一個初學java程序員,我做了一些研究,但我不明白如何將它應用到我的程序。爲什麼我在我的輸入中得到NullPointerException?
當我運行我的程序時,我得到一個NullPointerException
,因爲我輸入第一個IP地址的暱稱。爲什麼?
代碼中的隔離行是我得到異常的地方。
當您分配一個數組是這樣的:
IPAddress[] ipAddress = new IPAddress[2];
它創建了兩個插槽的數組,但兩者的插槽有null
。你需要把東西在每個時隙之前,你可以使用它作爲一個對象:
ipAddress[i] = new IPAddress();
ipAddress[i].nickname = input.next();
內local_address
你去找其他的NPE。您最初將result
設置爲null
,並且不要爲其指定數組。這就是你獲得NPE的原因。你可以解決這個問題:
String[][] result = new String[addr.length][]; // instead of null
但是,你也將需要分配String[]
爲j
每個值。如果您不知道count
會變成什麼樣子,您可以考慮使用可自動增長的List<String>
。
順便說一句:我不知道你要完成什麼,但是你的邏輯看起來不正確。你真的需要一個二維String
數組嗎?看起來這應該是你想要什麼:
static List<String> local_address(IPAddress addr[]) {
List<String> result = new LinkedList<>();
for (int j = 0; j < addr.length; j++) {
IPAddress test = addr[j];
if (test.xx == addr[j + 1].xx & test.yy == addr[j + 1].yy) {
result.add(addr[j + 1].nickname;
}
}
return result;
}
你缺少這一行(拋出NullPointerException異常前):
ipAddress[i] = new IPAddress();
你應該之前初始化數組的元素。
@ ShacoNotFound404在運行構建Ipaddress對象的構造函數之前,您不能分配您的值。新的IPAddress [2]沒有成爲對象,它只是佔用空間。所以你必須在他們改變他們的狀態,價值觀之前製造他們。 – daredesm 2014-10-05 23:13:46
您已創建IP地址的array
,但您從未填入任何IP地址。
這裏ipAddress[i].nickname = input.next();
你認爲ipAddress[i]
持有IPAdress
對象,並嘗試其nickname
字段設置爲input.next()
。但由於您尚未向其中添加任何對象,因此數組中填充的默認值爲null
。
我不能說出你「孤立」了什麼。任何時候你有一個錯誤,就像一個Java異常,發佈整個事情。它有很多你沒有給我們的信息。順便說一下,「&」的所有用法可能都是「&&」。在java中都是合法的運算符,但意味着不同的東西。 – arcy 2014-10-05 23:08:46
對不起@arcy,我試圖讓線條儘可能地顯眼。此外,這是整個代碼。並且代碼被評論來解釋我的每一個行動。並感謝你。我會根據合法的操作員提示進行更改。 – ShacoNotFound404 2014-10-05 23:12:21