为了账号安全,请及时绑定邮箱和手机立即绑定

我正在尝试将一个类的数组的值赋予另一个具有相同类的数组,这里有什么我遗漏的吗?

我正在尝试将一个类的数组的值赋予另一个具有相同类的数组,这里有什么我遗漏的吗?

HUX布斯 2021-08-04 17:17:41
这个类叫做 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;        }    }}
查看完整描述

1 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

您收到 NullPointerException 异常,因为“expo1”和“sala1”变量均为空。您必须在两个变量上传递对对象的引用。像这样的东西:


class SalaExpo(){

   Exposicion[] expo1=new Exposicion[100];

}


public class ConsoleMenu {


   private SalaExpo sala1;


   void execute(){

      sala1 = new SalaExpo();

   }

}

你也应该像这样 poblate sala1.expo1 数组(不知道这是否是你想要的,但你应该这样做以免得到 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,这意味着很多空值元素,因为你不是全部:


ImprimirExpo(sala1.expo1,posicion);

代替:


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


查看完整回答
反对 回复 2021-08-04
  • 1 回答
  • 0 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信