问题描述
我正在尝试创建跑步者,但会弹出此错误:
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,但没有可问的朋友。 任何帮助表示赞赏! 我还是编码概念的新手。
1楼
您使用参数int[] arr
声明了getSums
,但是尝试不使用任何参数来调用它: int[] sums1 = rb1.getSums();
如果您打算使用私有类成员arr
,只需从函数声明中删除参数:
public int[] getSums() {...
另一方面,如果希望将数组传递给方法getSums
,则需要明确地这样做:
int[] sums1 = rb1.getSums(one);
2楼
问题出在您的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;
}
}
注意:代码似乎陷入了无限循环。