Java 将新元素添加到我的arraylist会显示错误

Java 将新元素添加到我的arraylist会显示错误,java,arraylist,Java,Arraylist,我试图在我的arraylist中添加一个新元素,但它显示了er*或,我不知道为什么。 我试图改变它,但错误并没有消失。我想不出别的办法了。如果你想修好它,请帮我。 这是我的代码: //main class import java.util.ArrayList; public class Ticket { static ArrayList<T> arrayticket = new ArrayList <T>(); //T for Ticket( Generi

我试图在我的arraylist中添加一个新元素,但它显示了er*或,我不知道为什么。 我试图改变它,但错误并没有消失。我想不出别的办法了。如果你想修好它,请帮我。 这是我的代码:

//main class
import java.util.ArrayList;

public class Ticket {

    static ArrayList<T> arrayticket = new ArrayList <T>();   //T for Ticket( Generic Type)
public static void main(String[] args) {

 BuyTicket ticket1 = new BuyTicket();  
                ticket1.BuyaTicket();
}

class T {
    // instance variables
    private String type;
    private int RoutesOrDays;

    private String kind;
    private String name;
    private String email;

    private int TicketCode;
    private String ExpirationDate;




    //constructor
    public T(String type, int RoutesOrDays, String kind, String name, String email, int TicketCode, String ExpirationDate) {
        this.type = type;
        this.RoutesOrDays = RoutesOrDays;
        this.kind = kind;
        name = " ";
        email = " ";
        TicketCode = 0;
        ExpirationDate = " ";
    }
//++setters aand getters

}

public class BuyTicket extends MyInterface {

//METHOD
    int BuyaTicket() {
Save save_dataA = new Save();
                            save_dataA.Person3(type, hostOfRoutes, kind); 
     }
} 


public class SaveData extends T {
private String name;
    private String email;
    private int code;

    static AtomicInteger codeSequence = new AtomicInteger();  //Creates a new AtomicInteger with initial value 0

    //contructor
    public SaveData(String name, String email, int code ) {

        name =" ";
        email =" ";
        this.code = codeSequence.incrementAndGet();  //Atomically increments by one the current value.

    }

    //contructor of super 
    public SaveData(String type, int RoutesOrDays, String kind, String name, String email, int TicketCode, String ExpirationDate) {
        super(type, RoutesOrDays, kind, name, email, TicketCode, ExpirationDate);
    }

    void Person3(String type, int RoutesOrDays, String kind){    
        System.out.println("Type your full name.");
        String name = input.nextLine();
        System.out.println("Please type your email. ");
        String email = input.nextLine();
        code = codeSequence.incrementAndGet();

        arrayticket.add(new T(type, RoutesOrDays, kind, code,email, name));
//here is the er*or
    }

我对java非常陌生,所以我可以改变什么来修复它呢?

你说你是java新手,但你仍然决定使用许多类、接口和一些对java泛型的误解。我决定尽量简化您的代码,因为保持代码简单是编程的一个非常好的规则

我跳过了你的类BuyTickets,因为我不理解它,我将t移到类Tickets中,并将其放入data类,然后我让SaveData类只负责收集数据

还有一些奇怪的地方,比如我必须硬编码一些参数,你只能添加一张票,但我希望这能帮助你前进

保存数据类

public class SaveData {
    Scanner input;

    public SaveData() {
        input = new Scanner(System.in);
    }

    public Ticket buyTicket(String type, int routesOrDays, String kind) {
        System.out.println("Type your full name.");
        String name = input.nextLine();
        System.out.println("Please type your email. ");
        String email = input.nextLine();

        return new Ticket(type, routesOrDays, kind, name, email);
    }
}
还有主舱票呢

import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicInteger;

public class Ticket {
    static ArrayList<Ticket> arrayTicket = new ArrayList<>();
    private String type;
    private int routesOrDays;

    private String kind;
    private String name;
    private String email;
    private int ticketCode;
    private String expirationDate;
    static AtomicInteger codeSequence = new AtomicInteger();

    public Ticket(String type, int routesOrDays, String kind, String name, String email) {
        this.type = type;
        this.routesOrDays = routesOrDays;
        this.kind = kind;
        this.ticketCode = codeSequence.incrementAndGet();
        this.email = email;
        this.name = name;
        expirationDate = " ";
    }

    public static void main(String[] args) {
        SaveData save = new SaveData();
        String someType = "type";
        int someRoute = -1;
        String someKind = "kind";
        arrayTicket.add(save.buyTicket(someType, someRoute, someKind));

        for (Ticket ticket: arrayTicket) {
            System.out.printf("Ticket [%d] for %s, %s\n", ticket.ticketCode,ticket.name,ticket.email);
        }        
    }
}

Java之于Javascript,犹如痛苦之于绘画,火腿之于仓鼠。他们完全不同。强烈建议有抱负的程序员尝试学习他们试图编写代码的语言的名称。当您发布问题时,请适当标记。欢迎使用堆栈溢出!请带上,四处看看,并通读,特别是如何做和。从第二个环节开始:要求家庭作业帮助的问题必须包括到目前为止你为解决问题所做工作的总结,以及对你解决问题的困难的描述。请添加完整的错误消息。不要在实际类中使用像T这样的名称。T、 S、K、V等通常被理解为泛型的类型变量,将它们作为实类型使用是令人困惑和不可读的。此外,始终为类、方法和变量指定有意义的名称,并始终遵循Java命名约定。方法名称应以小写字母开头。所以,买一个,而不是买一个。