在使用方法时理解面向对象的赋值

Understanding an object-oriented assignment while working with methods

我还是 java 和 writing/reading 代码的新手,所以我不太确定我的教授想要什么。我所需要的只是加强我应该做的事情。 赋值如下:

指定并实现一个方法(某些 class X),该方法传递一个 NumberList 并且 returns 一个包含 NumberList 中的值的数组。

(您的方法未更改 NumberList。您的方法不是 NumberList 的成员。您将无法通过 运行 测试您的方法,因为我没有提供 NumberList class给你。)

If you need it, here are the public methods. 我使用的一种方法是:

public int size() //returns number of items in this NumberList

因此,据我所知,我所做的只是获取 NumberList 并创建一个值数组。很容易。这是处理要求的工作吗?

public double [] arrayNL(NumberList list){
    //pre: NL is not empty
    //post: array with NL values is returned
    double [] arrayNL = new double [list.size()];
    for(int x=0;x<list.size();x++){
        arrayNL[x]=list.nextDouble;
    }
    return arrayNL;
}

只是不确定 list.size() 和 list.nextDouble... 如果我对问题的理解是正确的。真的没有做足够的对象编码来 familiar/confident 并且我 严重 依赖测试,所以我质疑一切.任何帮助都会很棒,我只是出于某种原因无法按照这位教授的指示进行操作。

不确定我是否理解问题。目标是写复制列表到数组的代码,还是根据前置条件和post-条件实现NumberListclass中的方法?

你的代码基本上都在那里了,尽管 NumberList class 中的 next double 是未定义的,所以这可能会给你带来麻烦。以下是每个部分的作用:

public double [] arrayNL(NumberList list){

    // Initialize an array of doubles containing the same # of elements 
    // as the NumberList
    double [] arrayNL = new double [list.size()];

    // Iterate through the NumberList
    for(int x=0;x<list.size();x+) { 

        // Copy the double from the NumberList object to the double array 
        // at the current index.  Note "nextDouble" is undefined, but
        // NumberList does have a method you can use instead.
        arrayNL[x]=list.nextDouble; 
    } 

    // After iterating through the whole list, return the double array
    return arrayNL; 
}

对于任何格式问题,我们深表歉意。在我的 phone

上输入这个

我认为本练习的目标之一是教授如何阅读 API (Application program interface) 并通过阅读文档实现其方法,而不阅读其背后的实际代码。

这是一个重要的实践,因为作为未来的开发人员,您将不得不使用其他人的方法,并且您将无法自己实现所有事情。

至于您的代码,我不确定您在哪里看到 nextDouble 方法,因为我在文档中没有看到它。除非给你,否则我建议你坚持使用 NumberList() 和其他基本编码功能的文档。

您可以使用 public double get(int index) 而不是 nextDouble,因此您的 for 循环看起来像这样:

 for(int i = 0; i < list.size() ;i++){
    arrayNL[i]= list.get(i);
}

您的其余代码基本上没问题。