Java 数据结构类项目的方向是否正确?

Java 数据结构类项目的方向是否正确?,java,Java,在编程此类的事件处理时遇到问题。不了解如何在GUI类中实现它。这不是一个分级作业,或者必须提交。这只是一些帮助Java编码的独立练习。以下是对所问问题的一些描述: 创建一个JavaGUI程序,它有一个按钮、一个文本框和一个文本字段。当用户单击按钮时,系统应弹出一个文件选择窗口,允许用户从硬盘中选择文件。选择文件后,例如“ssn.txt”,程序应读取输入文件“ssn.txt”。在文件中,每行代表一个社会保险号。 程序首先将所有SSN读入内存。如果文件中的ssn格式错误,您的程序应该抛出SSNExc

在编程此类的事件处理时遇到问题。不了解如何在GUI类中实现它。这不是一个分级作业,或者必须提交。这只是一些帮助Java编码的独立练习。以下是对所问问题的一些描述:

创建一个JavaGUI程序,它有一个按钮、一个文本框和一个文本字段。当用户单击按钮时,系统应弹出一个文件选择窗口,允许用户从硬盘中选择文件。选择文件后,例如“ssn.txt”,程序应读取输入文件“ssn.txt”。在文件中,每行代表一个社会保险号。 程序首先将所有SSN读入内存。如果文件中的ssn格式错误,您的程序应该抛出SSNException对象,捕获该异常对象,并在文本框中显示该行的错误消息

以下是我的一些代码:

public class SSN_GUI extends JPanel implements ActionListener{

    public SSN_GUI(){

    makeObject();
    doTheLayout();
    theButton.addActionListener(this);

    }
    private JTextField inputSSN;
    private JButton theButton; 

    //Make all the Objects
    private void makeObject(){

        inputSSN = new JTextField(15);
        inputSSN.setEditable(true);
        theButton = new JButton();

        }

    //Layout all the Objects
    private void doTheLayout(){

        JPanel thePanel = new JPanel();
        thePanel.setLayout(new BorderLayout());
        thePanel.add(new JLabel("Enter Social Security Number: "));
        thePanel.add(inputSSN, "Center");
        thePanel.add(theButton, "North");
    }

    // Handle the button push
    public void actionPerformed(ActionEvent evt){
    }


}

任何时候,只要您有一个GUI,并且您正在处理数据,您都应该采用MVC方法。因此,您可以将GUI事件处理和数据处理分为两个不同的类

我将有一个扩展JFrame的类,它将负责显示视图。您的视图(虽然不是最佳实践)将创建一个新的模型类,其中包含您的文件读取和验证方法

注意:您的问题陈述没有指明文本字段将用于什么

您应该有一个扩展了Throwable的SSNException。您可以添加其他字段,但我只需添加一个字段,将格式错误的SSN作为字符串包含。您还可以添加零参数构造函数来设置默认错误消息

您可以创建一个模型类,该类负责迭代文件中的每一行,并运行引发SSNException的验证方法。验证SSN的一个简单方法是使用正则表达式。否则,您可以使用更原始的方法,例如逐个字符验证字符串。SSN只能有9位数字,因此长度为9个字符,格式为-。因此,有效的SSN只能在位置0-2、4-5、7-10处有数字0-9,位置3和6处的字符为“-”

如果决定使用正则表达式,请使用[String Reference]。在验证方法中匹配\\d{3}-\\d{2}-\\d{4},该验证方法在方法签名中引发SSNException。当match方法返回false时,可以在调用堆栈中抛出新的SSNException


在存储SSN的读入方面,您可以使用ArrayList或创建自己的ArrayList类。如果输入文件的顶部包含一个整数,那么基本字符串[]数组就可以了。假设数据文件有一个简单的数据结构,其中每一行代表一个SSN,那么用于文件读取的现成Java库包括Java.util.Scanner和Java.io.FileReader。因此,您可以使用新的FileReaderfilename将其传递给扫描仪。使用while.hasNextLine循环。

您应该尝试一下,为什么不尝试一下,然后看看哪些是有效的,哪些是无效的?如果你正在寻找一个代码审查,你应该检查一下到目前为止看起来不错。您最终必须将其放入JFrame中,并使其在屏幕上可见。我认为标题中的问题并不是指您遇到的任何特定问题,只是您正在为您的课程研究一些编程问题?不幸的是,您向我们展示的唯一代码是构建GUI布局和组件。此分配的所有复杂性听起来像是在文件IO和SSN验证中。如果您想知道您是否正确构建了GUI,那么到目前为止它看起来还不错。如果您想获得有关文件IO和SSN验证的帮助,请自己尝试一些东西,并更新您的问题,以向我们展示您的尝试。非常抱歉,您的数据结构教授认为Swing中的任何内容都属于他/她的课程。这个项目听起来像是属于CS101或102课程的基本编程概念。