为按钮的数组实现两个循环后获取NullPointerException import java.awt.*; 导入javax.swing.*; 导入java.awt.event.*; 公共类ScientificCalc扩展JFrame实现ActionListener { JPanel[]行=新JPanel[8]; JPanel[]行2=新JPanel[3]; JButton[]按钮=新JButton[29]; 字符串[]按钮字符串={“7”,“8”,“9”,“+,”√", "4", "5", "6", "-", "³√", “1”、“2”、“3”、“*”和“x²”, “0”、“/”、“C”、“±”, “罪”,“因”,“因”,“因”,“因”,“因”, “x³”、“xⁿ", "10ⁿ", "π", "ⁿ√"}; int[]dimW={300,45,100,90}; int[]dimH={35,40,100}; 维度显示维度=新维度(dimW[0],dimH[0]); 尺寸常规尺寸=新尺寸(dimW[1],dimH[1]); 尺寸rColumnDimension=新尺寸(dimW[2],dimH[1]); 尺寸zeroButDimension=新尺寸(dimW[3],dimH[1]); 布尔[]函数=新布尔[4]; double[]临时={0,0}; JTextArea显示=新的JTextArea(1,20); JTextArea funcdisp=新的JTextArea(1,20); Font Font=新字体(“Comic Sans MS”,Font.BOLD,12); 科学计算 { 超级(“科学计算器”); setDesign(); 设置大小(400350); 可设置大小(假); setDefaultCloseOperation(关闭时退出); GridLayout网格=新的GridLayout(6,5); 设置布局(网格); 对于(int i=0;i
因此,我复制了一半,一半是我自己编写的代码。我只是尝试代码,看看它是如何排列按钮的。然后,我为最后两行添加了for循环,然后我得到了以下错误:为按钮的数组实现两个循环后获取NullPointerException import java.awt.*; 导入javax.swing.*; 导入java.awt.event.*; 公共类ScientificCalc扩展JFrame实现ActionListener { JPanel[]行=新JPanel[8]; JPanel[]行2=新JPanel[3]; JButton[]按钮=新JButton[29]; 字符串[]按钮字符串={“7”,“8”,“9”,“+,”√", "4", "5", "6", "-", "³√", “1”、“2”、“3”、“*”和“x²”, “0”、“/”、“C”、“±”, “罪”,“因”,“因”,“因”,“因”,“因”, “x³”、“xⁿ", "10ⁿ", "π", "ⁿ√"}; int[]dimW={300,45,100,90}; int[]dimH={35,40,100}; 维度显示维度=新维度(dimW[0],dimH[0]); 尺寸常规尺寸=新尺寸(dimW[1],dimH[1]); 尺寸rColumnDimension=新尺寸(dimW[2],dimH[1]); 尺寸zeroButDimension=新尺寸(dimW[3],dimH[1]); 布尔[]函数=新布尔[4]; double[]临时={0,0}; JTextArea显示=新的JTextArea(1,20); JTextArea funcdisp=新的JTextArea(1,20); Font Font=新字体(“Comic Sans MS”,Font.BOLD,12); 科学计算 { 超级(“科学计算器”); setDesign(); 设置大小(400350); 可设置大小(假); setDefaultCloseOperation(关闭时退出); GridLayout网格=新的GridLayout(6,5); 设置布局(网格); 对于(int i=0;i,java,swing,nullpointerexception,Java,Swing,Nullpointerexception,因此,我复制了一半,一半是我自己编写的代码。我只是尝试代码,看看它是如何排列按钮的。然后,我为最后两行添加了for循环,然后我得到了以下错误: import java.awt.*; import javax.swing.*; import java.awt.event.*; public class ScientificCalc extends JFrame implements ActionListener { JPanel[] row = new JPanel[8]; J
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ScientificCalc extends JFrame implements ActionListener
{
JPanel[] row = new JPanel[8];
JPanel[] row2 = new JPanel[3];
JButton[] button = new JButton[29];
String[] buttonString = { "7", "8", "9", "+", "√",
"4", "5", "6", "-", "³√",
"1", "2", "3", "*", "x²",
"0", "/", "C", "±",
"sin", "cos", "tan", "=", ".",
"x³", "xⁿ", "10ⁿ", "π", "ⁿ√"};
int[] dimW = {300, 45, 100, 90};
int[] dimH = {35, 40, 100};
Dimension displayDimension = new Dimension(dimW[0], dimH[0]);
Dimension regularDimension = new Dimension(dimW[1], dimH[1]);
Dimension rColumnDimension = new Dimension(dimW[2], dimH[1]);
Dimension zeroButDimension = new Dimension(dimW[3], dimH[1]);
boolean[] function = new boolean[4];
double[] temporary = {0, 0};
JTextArea display = new JTextArea (1,20);
JTextArea funcdisp = new JTextArea(1,20);
Font font = new Font("Comic Sans MS", Font.BOLD, 12);
ScientificCalc()
{
super("Scientific Calculator");
setDesign();
setSize(400, 350);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
GridLayout grid = new GridLayout(6,5);
setLayout(grid);
for (int i = 0; i < 4; i++)
{
function[i] = false;
}
FlowLayout f1 = new FlowLayout(FlowLayout.CENTER);
FlowLayout f2 = new FlowLayout(FlowLayout.CENTER,1,1);
for(int i = 0; i < 6; i++)
{
row[i] = new JPanel();
}
row[0].setLayout(f1);
for(int i = 1; i < 6; i++)
{
row[i].setLayout(f2);
}
for(int i = 0; i < 29; i++)
{
button[i] = new JButton();
button[i].setText(buttonString[i]);
button[i].setFont(font);
button[i].addActionListener(this);
}
display.setFont(font);
display.setEditable(false);
funcdisp.setFont(font);
funcdisp.setEditable(false);
display.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
display.setPreferredSize(displayDimension);
funcdisp.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
funcdisp.setPreferredSize(displayDimension);
for(int i = 0; i < 15; i++)
{
button[i].setPreferredSize(regularDimension);
}
for(int i = 15; i < 29; i++)
{
button[i].setPreferredSize(regularDimension);
}
button[15].setPreferredSize(zeroButDimension);
row[0].add(display);
add(row[0]);
row[1].add(funcdisp);
add(row[1]);
for(int i = 0; i < 5; i++)
{
row[2].add(button[i]);
add(row[2]);
}
for(int i = 5; i < 10; i++)
{
row[3].add(button[i]);
add(row[3]);
}
for(int i = 10; i < 15; i++)
{
row[4].add(button[i]);
add(row[4]);
}
row[5].add(button[15]);
for(int i = 15; i < 19 ; i++)
{
row[5].add(button[i]);
add(row[5]);
}
for(int i = 19; i < 24 ; i++)
{
row[6].add(button[i]);
add(row[6]);
}
for(int i = 24; i < 29; i++)
{
row[7].add(button[i]);
add(row[7]);
}
setVisible(true);
}
public final void setDesign() {
try {
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch(Exception e) {
}
}
public static void main(String[] args)
{
new ScientificCalc();
}
}
线程“main”java.lang.NullPointerException中的异常
在ScientificCalc。(scienticCalc.java:126)
位于scientificalc.main(scientificalc.java:153)
不知道如何或是什么原因导致此错误。请帮助我至少看到一个导致
NullPointerException的原因:
Exception in thread "main" java.lang.NullPointerException
at ScientificCalc.<init>(ScientificCalc.java:126)
at ScientificCalc.main(ScientificCalc.java:153)
for(int i=0;i<6;i++)
{
行[i]=新JPanel();
}
...
第[6]行。添加(按钮[i]);
您不需要初始化行[6]
这里还有一个:
行[7]。添加(按钮[i]);
我发现至少有一个原因导致NullPointerException
:
Exception in thread "main" java.lang.NullPointerException
at ScientificCalc.<init>(ScientificCalc.java:126)
at ScientificCalc.main(ScientificCalc.java:153)
for(int i=0;i<6;i++)
{
行[i]=新JPanel();
}
...
第[6]行。添加(按钮[i]);
您不需要初始化行[6]
这里还有一个:
第[7]行。添加(按钮[i]);
第[6]行。
第[6]行。添加(按钮[i]);第[6]行。
第[6]行。添加(按钮[i]);哦…我明白了…再次感谢eran!现在运行。非常感谢!哦…我明白了…再次感谢eran!现在运行。非常感谢!