首页 > 解决方案 > 我试图将一个类的数组的值赋予另一个具有相同类的数组,这里有什么我遗漏的吗?

问题描述

这个类叫做 Exposicion,有一个 String 和一个 INT 值,所以我用它作为一个数组来获取用户的一些输入。

class Exposicion {
public String nombreExpo;
public int duracionExpo;

Exposicion(String nombreExpo, int duracionExpo) {
    this.nombreExpo = nombreExpo;
    this.duracionExpo = duracionExpo;
}
}

使用函数 SortExpo,只要 INT 值加起来不等于 180,我计划只复制数组的值,但 java 在执行时会标记错误:

      arrExpoT[posHor].nombreExpo = arrExpoS[k].nombreExpo;

这是整个功能

void SortExpo(Exposicion[] arrExpoS,int posicion,Exposicion[] arrExpoT){

    int poshor=0;
    int total=0;
    for (int k = 0; k < posicion; k++) {
        if ( total < 180 || arrExpoS[poshor].nombreExpo != "TOMADO123") {
            arrExpoT[poshor].nombreExpo = arrExpoS[k].nombreExpo;
            arrExpoT[poshor].duracionExpo = arrExpoS[k].duracionExpo;
            arrExpoS[poshor].nombreExpo = "TOMADO123";
            total = total + arrExpoS[k].duracionExpo;
            poshor++;
        } else {
            k = posicion;
        }
    }
}

错误

我在这个链接中添加了 .java 文件

如果这有帮助,还有 Main.java

标签: javaarraysloopsclassfor-loop

解决方案


你得到一个 NullPointerException 因为“expo1”和“sala1”变量都是空的。您必须在两个变量上传递对对象的引用。像这样的东西:

class SalaExpo(){
   Exposicion[] expo1=new Exposicion[100];
}

public class ConsoleMenu {

   private SalaExpo sala1;

   void execute(){
      sala1 = new SalaExpo();
   }
}

此外,您应该像这样对 sala1.expo1 数组进行 poblate(不知道这是否是您想要的,但您应该这样做以避免出现 NullPointerException):

void GuardarExpo(Exposicion[] arrExpoG,int posicion,Exposicion[] arrSala) {

     /*
        Bunch
         of
        code

     */

     arrExpoG[posicion] = new Exposicion(inputNombre,inputDuracion);
     arrSala[posicion]=arrExpoG[posicion];
}

最后,您应该使用变量“posicion”而不是“sala1.expo1.length”作为参数传递给“imprimirExpo”方法,因为数组“sala1.expo1”的长度为 100,这意味着很多 null元素,因为您没有全部发布:

ImprimirExpo(sala1.expo1,posicion);

代替:

ImprimirExpo(sala1.expo1,sala1.expo1.length);

推荐阅读