Java 在同一个包中使用数组元素从一个类到另一个类
我试图使用数组元素从一个类转换到另一个类。不会发生错误,但不会打印任何值。这是我的密码Java 在同一个包中使用数组元素从一个类到另一个类,java,arrays,Java,Arrays,我试图使用数组元素从一个类转换到另一个类。不会发生错误,但不会打印任何值。这是我的密码 public class Cow implements Animal { public ArrayList<cage> getSchedule(ArrayList<cage> cages) { for(int a = 0; a < cages.size(); a++) { Cage ct = (Cage)cages.
public class Cow implements Animal {
public ArrayList<cage> getSchedule(ArrayList<cage> cages) {
for(int a = 0; a < cages.size(); a++) {
Cage ct = (Cage)cages.get(a);
A[a]=ct.getStart();
B[a]=ct.getEnd();
}
return null;
}
}
公共类Cow实现动物{
公共ArrayList getSchedule(ArrayList框架){
对于(inta=0;a
现在我尝试调用另一个名为“背包求解器”
的类中的数组A[]和B[]。我从arraylist复制了代码,直到返回null,它没有显示任何错误。但是当我试图在背包解算器类中打印A[]
和B[]
时,它不会打印任何内容,而是在控制台“线程中的异常”main“java.lang.NullPointerException”
上显示一条消息
请帮助我了解如何在
背包求解器
类中使用A和B数组的值。为了澄清A和B中的数据是双重类型的,为了节省空间和时间,我在这里没有显示它的声明。期待一些建议。我想你应该使用类似于返回笼子
而不是返回null代码>我认为这是如下的,它允许。另外,您的ArrayList
几乎肯定应该是ArrayList
——但我更喜欢更通用的列表
,甚至是集合
。最后,Cage的数组将是Cage[]Cage代码>-ArrayList由数组支持,但它们与数组不同。您是否在Cage
中实现了toString()
?我也建议这样做。尽管听起来有些刺耳,但您的代码片段中有很多东西给我的印象是,您只是从编程开始。
这没什么问题,你只需要知道你在做什么:)
在java中,让类名以大写字母开头是常见的好做法(在您的示例中,Cow
而不是Cow
)。
此外,在您的示例中,如果可以使用List
而不是ArrayList
,请尝试使用接口来使用OO编程的强大功能。
有人说命名是编程中最难的事情之一。例如,我们通常将索引命名为i
,j
,k
。。。我们从不从a
开始。
然后是函数的返回值。它被键入为一个列表
,但它总是返回null
。您可能希望将返回值更改为void
(不返回任何内容),或者实际返回一个列表,甚至是空的。
我还有一个印象,你用A
和B
来返回你的日程安排,这通常不是一个好主意(除了命名一个无法获取任何信息的函数get之外,还可以使用实例属性在函数之间传输值,并创建两个相互关联的数组,而不是一个单独的调度数组)
现在,回到你的问题,我想看看A
和B
的完整声明,但我怀疑要么它们没有被定义在任何地方,要么你试图使用方法的返回值,它总是null
。或者cages是一个未初始化对象的列表(如果getStart
或getEnd
返回空Double
,并且a
和B
是Double
s,您将获得NPE)这段代码可能无法编译,所以您如何运行它?我需要查看A和B的声明才能理解这一点。我也尝试过,但没有成功,也没有给出编译错误,但控制台上显示了一行。很抱歉,如果我提到了一些不清楚的内容,因为我是Java和编程的初学者。您可能希望包括相关内容t代码也在背包解算器中。您可能只是引用了不正确的数组。下面是A和B double A[]=new double[cages.size()];double B[]=new double[cages.size()];就目前而言,Cow无法看到或使用A或B。因此,示例不完整。我如何实现toString()请您将语法写在这里好吗?谢谢您的期待。@user3055784感谢您澄清您对Java的了解有多么少。在您学习该语言的基础知识之前,我怀疑我能为您提供帮助。@MrBackend是的,您是对的,我刚开始学习Java,遇到了这个问题。总之,我有双重价值观Cow类中的A和B数组,并希望在背包解算器类中使用完全相同的A和B值,但无法使用。以下是A和B的声明。“double A[]=新的double[cages.size()];double B[]=新的double[cages.size()];”。在Cow类中一切正常。我通过在循环中添加print语句来验证A和B中的数据,测试了这一点。现在,当我在KnapsackSolver类中使用数组声明复制上述代码时,它不会打印任何内容。这就是我关心的如何访问和使用Knapsa中A和B的相同数组值如果我说了一些不清楚或不合逻辑的话,我会提前道歉,因为我是java新手,想学习它。