向另一个类的属性ArrayList中添加一个新对象

时间:2019-02-15 23:26:42

标签: java class oop object arraylist

尝试将新对象添加到另一个类的属性ArrayList时出现错误。让我解释一下。

UML

我的模型中确实有2个课程:

  1. Equipo
  2. Jugador

为简化起见,我们将其称为Equipo-> Team&Jugador-> Player。

对于每个团队,都会有多个玩家,所以我在Team类中创建了一个Player类型的ArrayList作为属性。

  1. Equipo

    library(lubridate)
    library(dplyr)
    
    #Define Data
    data = data.frame(Entity =c("a","b","c","d","e","f","g"), 
                      Code = c(3024,3024,2111,2111,2111,2111,2111),
                      Hour = c("8:00","8:05","8:11","8:18","8:33","8:50","9:08"))
    
    data2 = data.frame(Total = c(102,5000,500,600,800,50,100,80),
                       Hour2 = c("7:55","7:58","8:00","8:10","8:30","8:45","8:55","9:05"))
    
    #Create a dummy variable so that we can perform a cross join
    data_dummy = data%>%
      mutate(dummy = 1)
    
    data2_dummy = data2%>%
      mutate(dummy = 1)
    
    # Cross join the data and create lead and lag times
    final_df = data_dummy%>%
      inner_join(data2_dummy,by = "dummy")%>%
      select(-dummy)%>%
      mutate(Hour = hm(Hour),
             Hour2 = hm(Hour2))%>%
      mutate(HourLag = hms(Hour - hms("00:05:00"),roll = T),
             HourLead = hms(Hour + hms("00:05:00"),roll = T)
             )
    
    #Filter by the condition
    final_df = final_df[final_df$Hour2 >= final_df$HourLag,]
    final_df = final_df[final_df$Hour2 <= final_df$HourLead,]
    
    
    #Join the the original dataset (Not required)
    
    final_df = final_df%>%
      group_by(Entity)%>%
      summarise(Total_sum = sum(Total))%>%
      inner_join(data,by = "Entity")
    
  2. Jugador

    public class Equipo {
        private String nombre;
        private LocalDate fechaAlta;
        private String continente;
        private char clasificado;
    
        private ArrayList <Jugador> listaJugadores; //Muestra la relación 
    
        public Equipo(String nombre, LocalDate fechaAlta, String continente, char clasificado) {
            this.nombre = nombre;
            this.fechaAlta = fechaAlta;
            this.continente = continente;
            this.clasificado = clasificado;
        }
        .
        .
        .
    }
    

主要

在主类中,我创建并初始化了Teams和Players ArrayLists。

public class Jugador {
    private String jugador;
    private int dorsal;

    public Jugador(String jugador, int dorsal) {
        this.jugador = jugador;
        this.dorsal = dorsal;
    }
    .
    .
    .
}

我正在尝试将一个玩家添加到阵列中的最后一个团队

public static Ventana v1;
public static ArrayList <Equipo> listaEquipos;
public static ArrayList <Jugador> listaJugadores;

public static void main(String[] args) {

    v1 = new Ventana();
    v1.getearComboBox();
    v1.setVisible(true);

    //Inicializar arrays
    listaEquipos = new ArrayList <Equipo>();
    listaJugadores = new ArrayList <Jugador>();

但是,我遇到了我无法解决的NullPointerException错误。 https://imgur.com/a/Fc6ehlu

第98行:public static void inscribirJugador(String nombreJugador, String dorsalString){ //Conversion del dorsal int dorsal = Integer.parseInt(dorsalString); listaEquipos.get(listaEquipos.size()-1).getListaJugadores().add(new Jugador("nombreJugador", dorsal)); }

1 个答案:

答案 0 :(得分:1)

如果您没有在ArrayList中至少放置一个团队,那么您将在空对象上调用getListaJugadores。 实际上,如果ArrayList listaEquipos为空,则在方法调用listaEquipos.get(listaEquipos.size() -1)上将返回null。您必须至少有一支球队才能检索球员名单!