Java 我能';我似乎不知道如何从类创建对象

Java 我能';我似乎不知道如何从类创建对象,java,Java,我需要一些帮助,因为我真的卡住了。我正在做这个家庭作业,我似乎不明白为什么它不起作用。以下是确切的说明 创建一个名为“Java1Final\u LastName”的Eclipse项目 创建一个名为“Customer”的抽象类 在类中添加两个私有字段“name”和“id” 添加一个接受2个参数“aName”和“aId”的构造函数 添加以下抽象方法“public abstract int discount();” 创建名为“OnlineCustomer”的客户子类 添加一个构造函数,该构造函数接受两

我需要一些帮助,因为我真的卡住了。我正在做这个家庭作业,我似乎不明白为什么它不起作用。以下是确切的说明

  • 创建一个名为“Java1Final\u LastName”的Eclipse项目
  • 创建一个名为“Customer”的抽象类
  • 在类中添加两个私有字段“name”和“id”
  • 添加一个接受2个参数“aName”和“aId”的构造函数
  • 添加以下抽象方法“public abstract int discount();”
  • 创建名为“OnlineCustomer”的客户子类
  • 添加一个构造函数,该构造函数接受两个参数:name和id
  • 编写继承的抽象折扣方法的主体
  • 在线客户可获得10%的折扣
  • 为用户界面创建一个名为“CustomerJFrame”的JFrame类
  • 将“Java1FinalByLastName”分配给框架标题
  • 为名称添加JLabel和JTextField
  • 为Id添加JLabel和JTextField
  • 为消息输出添加JLabel
  • 为提交按钮添加JButton
  • 为提交按钮添加ActionPerformed侦听器
  • 选择按钮后,使用JTextFields中的名称和id创建OnlineCustomer对象。在消息JLabel的OnlineCustomer对象中显示名称、id和折扣
  • 创建一个名为“CustomerApp”的类,该类具有main方法
  • 创建CustomerJFrame类的对象
  • 所以我想我被困在了17岁。我不太清楚它在问什么。这是我到目前为止所做的一切。我想我很接近,但我觉得我错过了一些重要的事情

    -客户类别-

    import java.time.LocalDate;
    
    public abstract class Customer 
    {
    // private fields
    private String name;
    private String idnumber;
    
    // overloaded constructor with 2 arguments
    public Customer(String aName, String aIdNumber)
    {
        this.name = aName;
        this.idnumber = aIdNumber;
    }
    
    //abstract method
    public abstract int discount();
    }
    
    public class OnlineCustomer extends Customer
    {
    private int discount=10;
    
    //OnlineCustomer constructor
    public OnlineCustomer(String aName, String aIdNumber) 
    { 
        //use parent constructor
        super(aName, aIdNumber);
    }
    
    //body of inherited method
    public int discount()
    {
        return discount;
    }
    
    }
    
    -在线客户类别-

    import java.time.LocalDate;
    
    public abstract class Customer 
    {
    // private fields
    private String name;
    private String idnumber;
    
    // overloaded constructor with 2 arguments
    public Customer(String aName, String aIdNumber)
    {
        this.name = aName;
        this.idnumber = aIdNumber;
    }
    
    //abstract method
    public abstract int discount();
    }
    
    public class OnlineCustomer extends Customer
    {
    private int discount=10;
    
    //OnlineCustomer constructor
    public OnlineCustomer(String aName, String aIdNumber) 
    { 
        //use parent constructor
        super(aName, aIdNumber);
    }
    
    //body of inherited method
    public int discount()
    {
        return discount;
    }
    
    }
    
    -CustomerJFrame类-

    import java.awt.FlowLayout;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    
    public class CustomerJFrame extends JFrame implements ActionListener
    {
    private static final long serialVersionUID = 1L;
    
    //fields
    private JLabel nameJLabel;
    private JTextField nameJTextField;
    
    private JLabel idJLabel;
    private JTextField idJTextField;
    
    private JLabel outputJLabel;
    
    private JButton submitJButton;
    
    private final int WIDTH = 300;
    private final int HEIGHT = 250;
    
    public CustomerJFrame()
    {
        // call the super class constructor
        super("Java 1 Final by Vokurka");
    
        // set the height and width of the JFrame
        setSize(WIDTH, HEIGHT);
    
        // set the default close operation to end the program.
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setResizable(false);
    
        // set flow layout
        setLayout(new FlowLayout());
    
        // create a label and add it to the frame
        nameJLabel = new JLabel("Name: ");
        add(nameJLabel);
    
        // create a text field and add it to the frame
        nameJTextField = new JTextField("", 15);
        nameJTextField.selectAll();
        add(nameJTextField);
    
        // create a label and add it to the frame
        idJLabel = new JLabel("Id: ");
        add(idJLabel);
    
        // create a text field and add it to the frame
        idJTextField = new JTextField("", 15);
        idJTextField.selectAll();
        add(idJTextField);
    
        // create and add a message JLabel
        outputJLabel = new JLabel("Customer: Name, ID:000, Discount: 0%");
        add(outputJLabel);
    
        // create and add a JButton
        submitJButton = new JButton("Submit");
        submitJButton.addActionListener(this);
        add(submitJButton);
    
        // set the JFrame to visible
        setVisible(true);
    }
    
    @Override
    public void actionPerformed(ActionEvent e) 
    {
        // get the user data from the JTextFields
        String nameresults = nameJTextField.getText();
        String idresults = nameJTextField.getText();
    
        // set the results to the message JLabel
        outputJLabel.setText("Customer:" + nameresults, "ID:" + idresults, "Discount: 10%");
    }
    }
    
    -CustomerApp类-

    public class CustomerApp 
    {
    
    public static void main(String[] args) 
    {
        // create a JMyFrame object
        CustomerJFrame aFrame = new CustomerJFrame();
    }
    
    }
    

    任何帮助都将不胜感激。CustomerJFrame在设置输出文本时出错(如果有帮助)。谢谢大家

    如消息所述:您正在传递一个方法3参数,而它只需要1:

    outputJLabel.setText("Customer:" + nameresults, "ID:" + idresults, "Discount: 10%");
    
    相反,将它们连接到一个字符串中(或类似的内容):


    你不应该像步骤中说的那样创建对象吗

    OnlineCustomer oc = new OnlineCustomer(nameJTextField.getText(), idJTextField.getText());
    

    发布错误消息,并可能缩小问题代码的范围,而不是发布整个应用程序,将有助于您获得答案。您最好问一些准确的问题。没有人愿意做别人的家务(我真的不知道怎么了。错误消息是这样的;类型JLabel中的方法setText(String)不适用于参数(String,String,String)。如果我知道问题出在哪里,我会询问具体情况,对不起,我是新手。就像消息所说的:当它只需要1时,你要传递3个参数。你为什么不问问你的教授?这是他的工作,不是我们的。我不知道“安置有什么不同。谢谢!我真的很感谢你的帮助。
    安置没有什么不同。我刚刚添加了一个额外的空格,以便将
    ID
    Discount
    与前面的文本分开。这里的重要变化是使用
    +
    而不是
    将字符串的位连接在一起。如果是为了澄清,请您将其作为注释发布好吗?@Phani肯定我现在会重新编辑它,但我以前不能,因为当时我没有50%的声誉来提交注释。