PUT
忽略与evens相关的代码。当运行奇数阵列时,只列出一个奇数而不是第一个数组内的其他数字以及几个零。我尝试了很多东西,但只是简单地计算了所有奇数。
答案 0 :(得分:3)
看一下这部分:
public static int[] getAllOdds(int[] array) // when
{
int[] yaArray = new int[countOdds(array)];
int j = 0;
for(int i = 0; i<array.length;i++)
if(array[i]%2==1 && array[i]%2!=0)
yaArray[j]=array[i];
j++;
return yaArray;
}
变量j
仅增加一次,即循环结束后。
如果要在循环或条件分支中执行多个语句,请使用括号。
同样array[i]%2==1
与array[i]%2!=0
的含义相同,因此可以消除其中一个。
public static int[] getAllOdds(int[] array) // when
{
int[] yaArray = new int[countOdds(array)];
int j = 0;
for(int i = 0; i<array.length;i++)
{
if(array[i]%2==1)
{
yaArray[j]=array[i];
j++;
}
}
return yaArray;
}
答案 1 :(得分:0)
使用List而不是Arrays。列表最好使用。
试试这个,
public static void main(String[] args) {
System.out.println("Odds - " + Arrays.toString(getAllEvens(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 })));
System.out.println("Evens - " + Arrays.toString(getAllOdds(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 })));
}
public static Object[] getAllOdds(int[] array) {
List<Integer> list = new ArrayList<>();
for (int no : array) {
if (no % 2 != 0)
list.add(no);
}
return list.toArray();
}
public static Object[] getAllEvens(int[] array) {
List<Integer> list = new ArrayList<>();
for (int no : array) {
if (no % 2 == 0)
list.add(no);
}
return list.toArray();
}
您还可以返回list
而不是list.toArray()
以获得更好的列表。