【问题标题】:Creating array object and calling recursion method to display sum创建数组对象并调用递归方法显示总和
【发布时间】:2018-04-17 03:11:40
【问题描述】:

我试图弄清楚如何正确创建一个对象的实例,该实例将是一个 int 数组。另外,一旦我这样做了,我想尝试将数组显示为字符串,然后显示我的递归方法的总和,以便我可以测试我的对象类。

主要课程...

public class Client {

    public static void main(String[] args) {
        ObjectClass[] numArray = new ObjectClass[]; //trying to create new object so I can use toString method

        numArray.toString(); //calling toString method?
        numArray.recursionSum();
    }
}

对象类...

import java.util.Arrays;
import java.util.stream.*;

public class ObjectClass {

    int[] numArray = {10,10,20,20,40};

    public int[] getArray() { //this is my accessor method
        return numArray;
    }

    public int[] setArray(int[] newa) { //this is my mutator method
        this.numArray = newa;
        return this.numArray;
    }

    public String toString() { //this is my toString method
        return Arrays.toString(numArray);
    }

    public int recursionSum(int[] numArray, int n) { // this is the recursive method that returns sum of array elements
        if (n == 0)
            return numArray[n];
        else
            return numArray[n] + recursionSum(numArray, n-1);
    }

}

【问题讨论】:

  • 你似乎把事情复杂化了。这不是ObjectClass[] numArray = new ObjectClass[];,而是更简单的ObjectClass numArray = new ObjectClass();
  • 这有助于解决我最初的错误,但现在我收到一条错误消息,提示“ObjectClass 类型中的方法 recursionSum(int[], int) 不适用于参数 ()”
  • 然后修复错误。它看起来不言自明,不是吗? --即,错误消息确切地告诉你你做错了什么——批判性地阅读它并使用它来帮助你修复你的代码。
  • 我会改成类似的东西吗? numArray.recursionSum(numArray, ?) 我不知道为 int 传递什么
  • 您的ObjectClass 已经包含一个数组。 ObjectClass numArray = new ObjectClass() 就足够了。

标签: java arrays string recursion methods


【解决方案1】:

如果您没有将数组传递给类,我认为您应该创建另一个方法来启动递归并返回结果。 例如

public int recursionSum() {
  return recursionSum(numArray, numArray.length - 1);
}

【讨论】:

    【解决方案2】:

    1.new ObjectClass

    2.在你的main中使用setArraygetArrayrecursionSum方法。

    试试这个。

    public class Client {
    
        public static void main(String[] args) {
            // ObjectClass init
            ObjectClass objectClass = new ObjectClass();
            // int[]
            int n = 1;
            int[] numArray = {10,10,20,20,40};
            // set array
            objectClass.setArray(numArray);
            // toString method
            System.out.println(objectClass.toString());
            // you can change numArray and n
            System.out.println(objectClass.recursionSum(objectClass.getArray(),n));
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-05-26
      • 2016-06-19
      • 1970-01-01
      • 2021-01-31
      • 2018-01-25
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      相关资源
      最近更新 更多