java - 我试图将一个类的数组的值赋予另一个具有相同类的数组,这里有什么我遗漏的吗?
问题描述
这个类叫做 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;
}
}
}
解决方案
你得到一个 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);
推荐阅读
- excel - Excel中的图例键位置
- arrays - 删除包含特定键 JSON 的对象
- scala - 三个列表与猫的笛卡尔积
- android - 有没有办法从应用程序组件 dagger2 访问贡献模块实例
- macos - 如何永久更新 npm?
- php - 如果已经使用 php 准备语句从数据库中选择用户名和电子邮件
- android - 嵌套的 RecyclerViews:当 RecyclerView 正在计算布局或滚动时,无法调用 notifyDataSetChanged() 方法
- firebase - Firebase 函数部署失败并显示访问被拒绝
- php - PHP 使用 oAuth 使用 SalesForce SOAP API
- python - 从单独的数据框 pandas 中的最近时间戳中提取信息