为按钮的数组实现两个循环后获取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

为按钮的数组实现两个循环后获取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

因此,我复制了一半,一半是我自己编写的代码。我只是尝试代码,看看它是如何排列按钮的。然后,我为最后两行添加了for循环,然后我得到了以下错误:

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!现在运行。非常感谢!