我正在做一個簡單的代碼生成器(非隨機),我遇到了問題。用戶將數據輸入到7個文本字段中;然後將其內容放入String類型的數組中。然後,我的代碼接受該數組,分析不同的元素,並吐出一個可用的代碼(由我)。我可能有一個空指針異常,我只是不知道在哪裏
但是,在我嘗試將字符串數組標準化(也就是使每個元素都爲小寫字符串)時,它會導致整個程序停止工作,並且我看到空指針異常。
我的具體錯誤信息是這樣的:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at inventorycodeconverter.codeDisplay.calculateData(codeDisplay.java:48)
at inventorycodeconverter.InventoryCodeConverterView.button1ActionPerformed(InventoryCodeConverterView.java:315)
at inventorycodeconverter.InventoryCodeConverterView.access$900(InventoryCodeConverterView.java:23)
at inventorycodeconverter.InventoryCodeConverterView$5.actionPerformed(InventoryCodeConverterView.java:211)
at java.awt.Button.processActionEvent(Button.java:392)
at java.awt.Button.processEvent(Button.java:360)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
的代碼,似乎給人的麻煩是款都按這樣的:
public void calculateData(){
int i;
for (i = 0; i < calculationBuffer.length; i++){ // calculationBuffer is defined and initialized elsewhere.
calculationBuffer[i] = calculationBuffer[i].toLowerCase();// this is line 48 where the first error appears to be.
}
if (calculationBuffer[0].equals("cap")){
displayBuffer[0] = "CAP"; // displayBuffer is defined and initialized elsewhere.
}
else {
displayBuffer[0] = "#Error#";
}
if (calculationBuffer[1].equals("20/400")) {
theTA.append("B");
}
else if (calculationBuffer[1].equals("20/410")){
displayBuffer[1] = "C";
}
else if (calculationBuffer[1].equals("24/410")){
displayBuffer[1] = "F";
}
else if (calculationBuffer[1].equals("24/415")) {
displayBuffer[1] = "Y";
}
else if (calculationBuffer[1].equals("28/400")){
displayBuffer[1] = "H";
}
else if (calculationBuffer[1].equals("28/415")) {
displayBuffer[1] = "X";
}
else if (calculationBuffer[1].equals("28/410")) {
displayBuffer[1] = "I";
}
else if (calculationBuffer[1].equals("33/400")) {
displayBuffer[1] = "J";
}
else if (calculationBuffer[1].equals("38/400")) {
displayBuffer[1] = "K";
}
else if (calculationBuffer[1].equals("43/400")) {
displayBuffer[1] = "M";
}
else if (calculationBuffer[1].equals("45/400")) {
displayBuffer[1] = "N";
}
else if (calculationBuffer[1].equals("58/400")) {
displayBuffer[1] = "Q";
}
else if (calculationBuffer[1].equals("70/400")) {
displayBuffer[1] = "S";
}
else if (calculationBuffer[1].equals("89/400")) {
displayBuffer[1] = "T";
}
}
public void displayData() {
String displayString;
displayString = Arrays.toString(displayBuffer);
StringTokenizer st = new StringTokenizer(displayString, ",");
while(st.hasMoreTokens()){
String finalText = st.nextToken();
theTA.append(finalText);
}
}
請參閱調試在發生錯誤時計算緩衝區[i]的內容是什麼。 – svlada