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新手,想学习它。