写随机抽号软件遇到的报错

写随机抽号软件

img

package Main;
//RandomNumber.java
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import java.util.*;
import javax.swing.*;

public class Main extends JFrame{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    JLabel MAX,MIN,NUMBER,GAP;
    static JLabel result;
    static JTextField max;
    static JTextField min;
    static JTextField number;
    static JTextField gap;
    JButton Count; 
    JTextArea Result;
    Panel Left;
    static Panel Right;
    
    public static void main(String args[]){        
        int x = 500;
        int y = 350;
        JFrame F = new JFrame("RandomNumber");
        //INIT
        JLabel MAX =new JLabel("最大值:");
        JTextField max = new JTextField("100",6);
        JLabel MIN =new JLabel("最小值:");
        JTextField min = new JTextField("100",6);
        JLabel NUMBER = new JLabel("个数:");        
        JTextField number = new JTextField("1",6);
        JLabel GAP = new JLabel("最小间隔:");    
        JTextField gap = new JTextField("10",6);
        JButton Count = new JButton("抽号");
        JLabel result = new JLabel("结果:");
        JTextArea Result = new JTextArea(15,10);
        Panel Left = new Panel();
        Panel Right = new Panel();
        Left.setLayout(new GridLayout(6,2,10,10));
        Right.setLayout(new FlowLayout(FlowLayout.RIGHT));
        F.setLayout(new FlowLayout(FlowLayout.LEFT));
        //ADD-FIRST(LEFT)
        Left.add(MAX);
        Left.add(max);
        Left.add(MIN);
        Left.add(min);
        Left.add(NUMBER);
        Left.add(number);
        Left.add(GAP);
        Left.add(gap);
        Left.add(Count);
        Count.addActionListener(new Listener());
        //ADD-FIRST(RIGHT)
        Right.add(result);
        Right.add(Result);
        Result.setEditable(false);
        //ADD-SECOND
        Panel MainPanel = new Panel();
        MainPanel.add(Left);
        MainPanel.add(Right);        
        F.add(MainPanel);
        //END
        F.setSize(x, y);
        //SetLocation
        Toolkit kit = Toolkit.getDefaultToolkit();
        Dimension screenSize = kit.getScreenSize();
        int screenw = screenSize.width;
        int screenh = screenSize.height;
        F.setLocation((screenw-x)/2, (screenh-y)/2);
        //SetVisible
        F.setVisible(true);
        F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    static class Listener implements ActionListener {    
        private String end;
        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                int Max = Integer.valueOf(Main.max.getText());
                int Min = Integer.valueOf(Main.min.getText());                            
                int Gap = Integer.valueOf(Main.gap.getText());
                Random r = new Random();
                int[] List = null;
                if(Main.number.getText() != null) {
                    int COUNT = 0;
                    for(int Number = Integer.valueOf(Main.number.getText()) ; Number < 0 ; Number-- ) {                    
                        int TMP = COUNT;
                        if(Number == Integer.valueOf(Main.number.getText())) {
                            COUNT =  r.nextInt(Max - Min + 1) + Min;
                        }else {
                            while(Math.abs(COUNT - TMP) <= Gap) {
                                COUNT =  r.nextInt(Max - Min + 1) + Min;                    
                            }
                            List[Math.abs(Integer.valueOf(Main.number.getText()) - Number)] = COUNT;
                        }
                    }
                    String end = null;
                    for(int i: List) {
                        end.concat(String.valueOf(i)+" ");
                    }                
                }
                Main.result.setText("结果:" + end);
            } catch (Exception a) {
                JOptionPane.showMessageDialog(null,a.getMessage(),"Error",JOptionPane.ERROR_MESSAGE);
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e1) {
                    JOptionPane.showMessageDialog(null,e1.getMessage(),"Error",JOptionPane.ERROR_MESSAGE);
                }
                   System.exit(1);
            }
        }
    }
}

img

https://img-mid.csdnimg.cn/release/static/image/mid/ask/667751319276130.png "#left")
不报错

你很多变量都在已经声明过静态的变量了,为啥还要在弄一个同名的局部变量呢,你现在实例化的都是局部的这些变量,静态的那个都没有,然而你的listener用的还是静态的变量,当然是会报空指针了。
像下面这样就可以了

        MAX =new JLabel("最大值:");
        max = new JTextField("100",6);