Java中如何判断文本输入框中输入的内容是否重复?

我把文本输入框输入的内容存到一个txt文件中,但当我继续从文本输入框输入内容并按确定时,该如何判断我输入的内容在txt文件中已经存在?即当我输入一个学号后,如何判断输入的学号已经存在?

 package bigwork;

import java.awt.*;
import java.awt.event.*;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.*;

public class AddInfo extends JFrame implements ActionListener {
    JButton jb1,jb2=null;
    JTextField jtf1,jtf2,jtf3,jtf4=null;
    JLabel jl1,jl2,jl3,jl4,jl5=null;
    JPanel jp1,jp2,jp3,jp4,jp5,jp6=null;

    private String name ,num,cla,tel;
    private static AddInfo[] s=new AddInfo[100];
    private int n=0;

    public static void main(String[] args) {
        AddInfo AI=new AddInfo();
        AddInfo[] s=new AddInfo[100];
    }
    public  AddInfo() {
        //初始化界面
        JPanel jp1=new JPanel();
        JLabel jl1=new JLabel("****学生信息录入****",SwingConstants.CENTER);
        jl1.setFont(new Font("****学生信息录入****",Font.PLAIN,35));
        jp1.add(jl1);

        JPanel jp2=new JPanel();
        JLabel jl2=new JLabel("姓名:", SwingConstants.CENTER);// 文字居中
        jl2.setFont(new Font("姓名",Font.PLAIN,20));
        jtf1 = new JTextField(10);
        jp2.add(jl2);
        jp2.add(jtf1);


        JPanel jp3=new JPanel();
        JLabel jl3=new JLabel("学号:", SwingConstants.CENTER);// 文字居中
        jl3.setFont(new Font("学号",Font.PLAIN,20));
        jtf2 = new JTextField(10);
        jp3.add(jl3);
        jp3.add(jtf2);


        JPanel jp4=new JPanel();
        JLabel jl4=new JLabel("班级:", SwingConstants.CENTER);// 文字居中
        jl4.setFont(new Font("班级",Font.PLAIN,20));
        jtf3 = new JTextField(10);
        jp4.add(jl4);
        jp4.add(jtf3);


        JPanel jp5=new JPanel();
        JLabel jl5=new JLabel("电话:", SwingConstants.CENTER);// 文字居中
        jl5.setFont(new Font("电话",Font.PLAIN,20));
        jtf4 = new JTextField(10);
        jp5.add(jl5);
        jp5.add(jtf4);

        JPanel jp6=new JPanel();
        JButton jb1=new JButton("确定");
        JButton jb2=new JButton("返回");
        jp6.add(jb1);
        jp6.add(jb2);

        jb1.addActionListener(this);
        jb2.addActionListener(this);

        setLayout(new GridLayout(6,1,20,20));
        add(jp1);
        add(jp2);
        add(jp3);
        add(jp4);
        add(jp5);
        add(jp6);

        this.setSize(500, 400);// 大小
        setLocationRelativeTo(null);// 居中
        this.setResizable(true);// 不可缩放
        this.setTitle("学生信息录入系统");// 标题名
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);// 退出就关闭界面
        this.setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO 自动生成的方法存根
        if(e.getActionCommand()=="返回") {
            Mainmenu.main(null);
            dispose();
        } else {
            if(!jtf1.getText().isEmpty()&&!jtf2.getText().isEmpty()&&!jtf3.getText().isEmpty()&&!jtf4.getText().isEmpty()) {
                try {
                    this.addinfo();
                    n++;
                } catch (IOException e1) {
                    // TODO 自动生成的 catch 块
                    e1.printStackTrace();
                }
                JOptionPane.showMessageDialog(null , "学生信息录入成功","提示消息",JOptionPane.WARNING_MESSAGE);    
            }else if(jtf1.getText().isEmpty()||jtf2.getText().isEmpty()||jtf3.getText().isEmpty()||jtf4.getText().isEmpty()) {
                JOptionPane.showMessageDialog(null , "请输入完整学生信息!","提示消息",JOptionPane.WARNING_MESSAGE);
            }
        }
  }
private void addinfo() throws IOException {
    // TODO 自动生成的方法存根
    for(int i=0;i<=n;i++) {
    s[n].name=jtf1.getText();   //姓名
    s[n].num=jtf2.getText();    //学号
    s[n].cla=jtf3.getText();   //班级
    s[n].tel=jtf4.getText();   //电话
    }

    for(int i=0;i<n;i++) {      
        while(s[i].num==jtf2.getText()) {
            JOptionPane.showMessageDialog(null , "已存在此学号,请重新输入!","提示消息",JOptionPane.WARNING_MESSAGE); 
        }
    }       
    FileWriter fw = new FileWriter("D:\\JAVA\\PROJECT\\newstudent.txt",true);   
    fw.write(s[n].num+"      "+s[n].name+"      "+s[n].cla+"      "+s[n].tel+"\r\n\r\n");
    fw.close();
}
}

1个回答

思路无非两个,用一个HashSet(查找速度快)保存所有已输入的学号,每次写入前判断是否已存在。或者直接先统一存在hashset(不重复)中,等全部输入完再写入txt

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐