Java 类RowBreaker中的方法getSums无法应用于给定类型

Java 类RowBreaker中的方法getSums无法应用于给定类型,java,Java,我正在尝试创建跑步者,但出现以下错误: method getSums in class RowBreaker cannot be applied to given types; int[] sums1 = rb1.getSums(); error: method getSums in class RowBreaker cannot be applied to given types; int[] sums2 = rb2.getSums(); 以下是主要类别代码: public class Ro

我正在尝试创建跑步者,但出现以下错误:

method getSums in class RowBreaker cannot be applied to given types;
int[] sums1 = rb1.getSums();
error: method getSums in class RowBreaker cannot be applied to given types;
int[] sums2 = rb2.getSums();
以下是主要类别代码:

public class RowBreaker {

    private int[] arr;

    public RowBreaker(int[] GO) {
        arr = GO;
    }

    public int[] getSums(int[] arr){
        int theSum=0;
        int[] sum = new int[arr.length];
        for(int i = 0;i<arr.length;i++){
            int n = arr[i];
            while(n!=0){
                if(n%10!=0){
                    sum[i]=theSum;
                }
            }
            n=n/10;
        }
        return sum;
    }
}
我尝试过谷歌,但我没有任何可以问的朋友。感谢您的帮助!我仍然不熟悉编码概念。

您使用参数int[]arr声明了getSums,但您尝试不使用参数调用它:int[]sums1=rb1.getSums

如果要使用私有类成员arr,只需从函数声明中删除参数:

public int[] getSums() {...
另一方面,如果希望将数组传递给getSums方法,则需要明确地这样做:

int[] sums1 = rb1.getSums(one);
问题在于int[]sums1=rb1.getSums;和int[]sums2=rb2.getSums;您有一个int[]作为参数,因此必须传入一些内容。我建议您从方法getSums中删除该参数,只使用已有的私有int[]arr实例

编辑

下面是您的类应该是什么样子的想法:

import java.util.Arrays;

public class RowBreakerRunner {
    public static void main(String[] args) {

        int[] one = { 36, 271, 343, 2001, 1048 };
        RowBreaker rb1 = new RowBreaker(one);
        int[] sums1 = rb1.getSums();

        int[] two = { 361, 2348, 174, 129, 7002 };
        RowBreaker rb2 = new RowBreaker(two);
        int[] sums2 = rb2.getSums();

        Arrays.stream(sums1).forEach(n -> System.out.println(n));
        Arrays.stream(sums2).forEach(n -> System.out.println(n));

    }
}

public class RowBreaker {

    private int[] arr;

    public RowBreaker(int[] GO) {
        arr = GO;
    }

    public int[] getSums() {
        int theSum = 0;
        int[] sum = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            int n = arr[i];
            while (n != 0) {
                if (n % 10 != 0) {
                    sum[i] = theSum;
                }
            }
            n = n / 10;
        }
        return sum;
    }
}

注意:代码似乎卡在无限循环中。

getSums采用int[]参数。但是,当您调用method.put参数到您的方法`rb1.getSumsone`确保再次公开RowBreaker类。
import java.util.Arrays;

public class RowBreakerRunner {
    public static void main(String[] args) {

        int[] one = { 36, 271, 343, 2001, 1048 };
        RowBreaker rb1 = new RowBreaker(one);
        int[] sums1 = rb1.getSums();

        int[] two = { 361, 2348, 174, 129, 7002 };
        RowBreaker rb2 = new RowBreaker(two);
        int[] sums2 = rb2.getSums();

        Arrays.stream(sums1).forEach(n -> System.out.println(n));
        Arrays.stream(sums2).forEach(n -> System.out.println(n));

    }
}

public class RowBreaker {

    private int[] arr;

    public RowBreaker(int[] GO) {
        arr = GO;
    }

    public int[] getSums() {
        int theSum = 0;
        int[] sum = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            int n = arr[i];
            while (n != 0) {
                if (n % 10 != 0) {
                    sum[i] = theSum;
                }
            }
            n = n / 10;
        }
        return sum;
    }
}