Java 我可能有一个空指针异常,我只是不知道';我不知道在哪里
我正在制作一个简单的代码生成器(非随机),我遇到了一个问题。用户将数据输入7个文本字段;然后将其内容放入字符串类型的数组中。然后,我的代码获取该数组,分析不同的元素,并写出一个(我自己)可用的代码 然而,在我试图标准化字符串数组(又称为使每个元素都成为小写字符串)时,它会导致整个程序停止工作,我得到一个似乎是空指针异常的结果 我的特定错误消息如下所示:Java 我可能有一个空指针异常,我只是不知道';我不知道在哪里,java,generator,Java,Generator,我正在制作一个简单的代码生成器(非随机),我遇到了一个问题。用户将数据输入7个文本字段;然后将其内容放入字符串类型的数组中。然后,我的代码获取该数组,分析不同的元素,并写出一个(我自己)可用的代码 然而,在我试图标准化字符串数组(又称为使每个元素都成为小写字符串)时,它会导致整个程序停止工作,我得到一个似乎是空指针异常的结果 我的特定错误消息如下所示: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException a
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);
}
}
public void calculateData(){
int i;
对于(i=0;i
您在哪里填写计算缓冲区
您收到的错误表明calculationBuffer[i]为空,这意味着您没有正确填充初始数组。您在哪里填充calculationBuffer
您收到的错误表明calculationBuffer[i]为空,这意味着您没有正确填充初始数组。您在某个地方声明了如下数组(可能): 它将使用
null
s初始化所有索引。因此你得到了NPE
在使用数组之前,应按如下所示填充循环中的所有索引
for(int i=0; i<size; i++)
{
calculationBuffer[i] = "A String";
}
for(int i=0;i您已声明数组如下(可能):
它将使用null
s初始化所有索引,因此您将获得NPE
在使用数组之前,应按如下所示填充循环中的所有索引
for(int i=0; i<size; i++)
{
calculationBuffer[i] = "A String";
}
for(int i=0;i如果您像这样声明字符串数组string[]calculationBuffer=new string[size];
然后所有的字符串元素都由Null初始化,所以如果您没有在其他地方向这个字符串数组中添加值,那么您可以像这样更新代码
for (i = 0; i < calculationBuffer.length; i++){
**calculationBuffer[i]="";**
calculationBuffer[i] = calculationBuffer[i].toLowerCase();// this is line 48 where the first error appears to be.
}
(i=0;i
**计算缓冲区[i]=“”**
calculationBuffer[i]=calculationBuffer[i].toLowerCase();//这是第48行,第一个错误出现在这里。
}
如果您是这样声明字符串数组的话,那就谢谢了。string[]calculationBuffer=newstring[size];
然后所有的字符串元素都由Null初始化,所以如果您没有在其他地方向这个字符串数组中添加值,那么您可以像这样更新代码
for (i = 0; i < calculationBuffer.length; i++){
**calculationBuffer[i]="";**
calculationBuffer[i] = calculationBuffer[i].toLowerCase();// this is line 48 where the first error appears to be.
}
(i=0;i
**计算缓冲区[i]=“”**
calculationBuffer[i]=calculationBuffer[i].toLowerCase();//这是第48行,第一个错误出现在这里。
}
感谢在调试中查看发生错误时calculationBuffer[i]的内容。在调试中查看发生错误时calculationBuffer[i]的内容。