嘿我试图调用方法" swapPairs(int [] nums)",但我收到多个错误
- Syntax error on token "{", delete this token
- The method swapPairs(int[]) in the type ArrayMethods is not applicable
for the arguments (int, int, int, int)
- Syntax error on token "swapPairs", @ expected before this token
- Syntax error on token ";", @ expected after this token
- Syntax error on token "}", delete this token"
这是我的代码:
public class ArrayMethods {
public static void main(String[]args){
System.out.println(swapPairs({5,4,2,6}));
allLess({5,4,3}, {4,7,5});
}
public boolean allLess(int[] nums, int[] num){
int c=0;
if(nums.length==num.length){
for(int i=0; i<num.length; i++){
if(nums[i]<num[i])
return true;
}
}
return false;
}
public int[] swapPairs(int[] nums){
int[] x=new int[nums.length];
if(nums.length%2==0){
for(int i=0; i<nums.length; i++)
x[i]=nums[i+1];
return x;
}
else
for(int i=0; i<nums.length-1; i++)
x[i]=nums[i+1];
return x;
}
public void printArray(int[] nums){
for(int i=0; i<nums.length; i++)
System.out.println(nums[i]);
}
}
在方法swapPairs中我可能也有错误。这样做的目的是交换数组中的相邻元素,如果数组的长度是奇数,则将最后一个元素保持在原来的位置。谢谢!
答案 0 :(得分:3)
您无法从non-static
班级访问static
个成员。
System.out.println(swapPairs({5,4,2,6})); // swapPairs() is non-static
allLess({5,4,3}, {4,7,5}); //allLess() is non-static
解决方案:
制作ArrayMethods
的实例以访问swapPairs()
方法和allLess()
方法,或制作这些方法static
。
但此处还有更多问题。您无法使用swapPairs({5,4,2,6})
,必须使用swapPairs(new int[]{5,4,2,6})
一种纠正方式
ArrayMethods arrayMethods = new ArrayMethods();
System.out.println(arrayMethods.swapPairs(new int[]{5, 4, 2, 6})); // *
arrayMethods.allLess(new int[]{5, 4, 3},new int[]{4, 7, 5});
注意*
行。您正在明确调用toString()
。这不是一个好习惯。
更多问题:
for (int i = 0; i < nums.length; i++)
x[i] = nums[i + 1]; // you will get ArrayIndexOutOfBoundsException
return x;
i=nums.length-1
时,nums[i + 1]
将成为num[nums.length]
。现在阵列中没有这样的索引。如果数组的大小为4
,则您的索引仅从0
到3
。
您可以将这些积分带到您的帐户,并将这些错误纠正。