首页 > 解决方案 > 向我的数组列表添加新元素显示错误

问题描述

我正在尝试在我的数组列表中添加一个新元素,但它显示 er*or,我不知道为什么。我试图改变它,但错误并没有消失。我想不出别的东西。如果你想解决它,请帮助我。这是我的代码:

//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很陌生,所以我可以改变什么来修复它???

标签: javaarraylist

解决方案


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

我跳过了你的BuyTickets课,因为我不明白,我搬进T了课堂Ticket,把它变成了数据类,然后我让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);
        }        
    }
}

推荐阅读