XazGreatXia 2024-05-29 14:26 采纳率: 29%
浏览 5

Java string数组null值删不掉



```java
//导入
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import javax.swing.*;
import javax.swing.Timer;

//创建主类
public class Election {
    //主方法
    public void main(String[] args) throws InterruptedException {
        //设置编码
        //创建初始变量
        System.setProperty("file.encoding", "GBK");
        String[] m = ReadFile("name.txt");
        ArrayList<String> list = new ArrayList<>();
        for(int x = 0;x < m.length;x++) {
            list.add(m[x]);
        }
        list.remove(null);
        final String[] l = list.toArray(new String[list.size()]);
        
        
        
        //开始创建窗口
        JFrame.setDefaultLookAndFeelDecorated(false);
        JFrame k = new JFrame();

        //初始化颜色
        Color b = new Color(245,245,245);
        Color bg = new Color(255,255,255);
        k.getContentPane().setBackground(bg);
        k.setLayout(null);
        k.setSize(1000,800);
        k.setResizable(false);
        k.setTitle("Election");
        k.setLocationRelativeTo(null);
        k.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        k.setVisible(true);


        

        //结果输出
        JLabel Result = new JLabel();
        Result.setBounds(430, 0, 450, 200);
        Font c = new Font("楷体",Font.PLAIN,50);
        Result.setFont(c);
        Result.setVisible(true);
        k.add(Result);


        ActionListener bt = new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                Random r = new Random();
                //int index = r.nextInt(m.length);
            
                int i = r.nextInt(l.length);
                Result.setText(l[i]);
                
                
            }
        };
        Timer timer = new Timer(100,bt);
        Thread.sleep(500);
        

        // Thread thread = new Thread(
        //             new Runnable() {
        //                 @Override
        //                 public void run() {
        //                     try {
        //                         Thread.sleep(1000);
        //                         Random r = new Random();
        //                         int index = r.nextInt(m.length);
        //                         Result.setText(m[index]);
        //                     } catch(Exception e) {
        //                         e.printStackTrace();
        //                     }
        //                 }
        //             }
        // );
        




        //创建按钮
        JButton bt1 = new JButton("start");
        k.add(bt1);
        bt1.setBounds(300,600,100,50);
        bt1.setBackground(b);
        bt1.setContentAreaFilled(true);
        bt1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                
                if("start".equals(e.getActionCommand())) {
                    timer.start();
                }
            }
        });
        bt1.repaint();
        bt1.setVisible(true);
        
        

        JButton bt2 = new JButton("stop");
        k.add(bt2);
        bt2.setBounds(600,600,100,50);
        bt2.setBackground(b);
        bt2.setContentAreaFilled(true);
        bt2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if("stop".equals(e.getActionCommand())) {
                    timer.stop();
                }
            }
        });
        bt2.repaint();
        bt2.setVisible(true);
            

    }
    //创建读取文件方法
    public String[] ReadFile(String i) {
        StringBuilder c = new StringBuilder();
        try {
            FileInputStream f = new FileInputStream(i);
            BufferedReader bf;
            String s;
            try (InputStreamReader n = new InputStreamReader(f,"GBK")) {
                bf = new BufferedReader(n);
                while((s = bf.readLine()) != null) {
                    s = bf.readLine();
                    c.append(s).append(System.lineSeparator());
                }
                bf.close();
                f.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        String[] Result = c.toString().split("\n");
        return Result;
    }
}




请问为什么m这个string数组里面的null值删不掉啊,每一次输出都有null,而且这个null值好像被识别成了一个字符串而不是单纯的null,望各位博主帮忙看看,感谢!

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-29 14:26
    关注

    引自免费微信小程序:皆我百晓生

    在你的代码中,m 是从 ReadFile 方法返回的字符串数组。看起来可能是因为你在调用 list.remove(null) 后,没有更新 m 变量。你需要将处理过的 ArrayList 转换回 String[] 并赋值给 m

    以下是修改后的代码:

    // 创建初始变量
    System.setProperty("file.encoding", "GBK");
    String[] m = ReadFile("name.txt");
    ArrayList<String> list = new ArrayList<>();
    for (int x = 0; x < m.length; x++) {
        list.add(m[x]);
    }
    
    // 这里添加了对null值的过滤
    list.removeIf(Objects::isNull);
    
    final String[] l = list.toArray(new String[list.size()]);
    m = l; // 更新m为处理后无null值的数组
    
    // ...后续的代码保持不变...
    

    这段代码首先创建了一个新的 ArrayList,然后将 m 数组中的所有元素添加到列表中。接着,我们使用 removeIf() 方法过滤出所有的 null 值。最后,我们将处理过的列表转换回 String[] 类型,并将其赋值给 m。这样,在后续的操作中,m 就不会包含任何 null 值了。

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 5月29日
  • 创建了问题 5月29日

悬赏问题

  • ¥20 双硬盘安装Ubuntu后windows 无法挂载硬盘
  • ¥15 下面求极限的步骤哪里不对,正确答案是a1a2…an
  • ¥15 帮我利用jupyter 运行一个正确的代码
  • ¥15 如何使用Gephi软件和Python包中的GephiStreamer交互
  • ¥15 sqlite加密问题咨询
  • ¥15 appdesigner接收不到udp组播的数据
  • ¥15 verilog 非阻塞赋值下的移位拼接错误
  • ¥100 两个按钮控制一个LED
  • ¥15 用C语言写离散数学相关问题
  • ¥30 如何用python的GephiStreamer连接到gephi中,把Python和Gephi的具体操作过程都展示,重点回答Gephi软件的调试,以及如果代码的端口在浏览器中无法显示怎么处理