2009penguin 2023-01-05 18:06 采纳率: 54.5%
浏览 43
已结题

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

写随机抽号软件

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")
不报错
  • 写回答

1条回答 默认 最新

  • pzzhao 2023-01-05 20:22
    关注

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

            MAX =new JLabel("最大值:");
            max = new JTextField("100",6);
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月16日
  • 已采纳回答 1月8日
  • 创建了问题 1月5日

悬赏问题

  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥50 我撰写的python爬虫爬不了 要爬的网址有反爬机制
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等