当前位置: 代码迷 >> java >> RowBreaker类中的getSums方法不能应用于给定类型
  详细解决方案

RowBreaker类中的getSums方法不能应用于给定类型

热度:71   发布时间:2023-07-31 13:38:21.0

我正在尝试创建跑步者,但会弹出此错误:

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;
    }
}

这是跑步者,这似乎是问题所在:

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();
    }
}

我已经尝试过google,但没有可问的朋友。 任何帮助表示赞赏! 我还是编码概念的新手。

您使用参数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删除该参数,而只需使用已经拥有的private 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;
    }
}

注意:代码似乎陷入了无限循环。

  相关解决方案