Jer*_* Ng 0 java arrays methods
现在,我正试图找到数组的奇数和偶数.这是我到目前为止的代码.我知道我的findEvens()和findOdds()方法搞砸了,因为每当我尝试打印最终结果时,它们都会让我不再使用值.例如,如果我试图找到{1,5,8,3,10}的赔率,它会给我{5,3,0}.如果我试图找到{2,5,8,7,19}的平均值,它会给我{2,8,0}.谁知道为什么?
public class Scores {
private int[] numbers;
public Scores(int[] numbersIn) {
numbers = numbersIn;
}
public int[] findEvens() {
int numberEvens = 0;
for (int i = 0; i < numbers.length; i++) {
if (i % 2 == 0) {
numberEvens++;
}
}
int[] evens = new int[numberEvens];
int count = 0;
for (int i = 0; i < numbers.length; i++) {
if (numbers[i] % 2 == 0) {
evens[count] = numbers[i];
count++;
}
}
return evens;
}
public int[] findOdds() {
int numberOdds = 0;
for (int i = 0; i < numbers.length; i++) {
if (i % 2 == 0) {
numberOdds++;
}
}
int[] odds = new int[numberOdds];
int count = 0;
for (int i = 1; i < numbers.length; i++) {
if (numbers[i] % 2 == 1) {
odds[count] = numbers[i];
count++;
}
}
return odds;
}
public double calculateAverage() {
int sum = 0;
for (int i = 0; i < numbers.length; i++) {
sum += numbers[i];
}
return (double) sum / numbers.length;
}
public String toString() {
String result = "";
for (int i = 0; i < numbers.length; i++) {
result += numbers[i] + "\t";
}
return result;
}
public String toStringInReverse() {
String result = "";
for (int i = numbers.length - 1; i >= 0; i--) {
result += numbers[i] + "\t";
}
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
你的问题在于计算你有多少偶数
public int[] findEvens() {
int numberEvens = 0;
for (int i = 0; i < numbers.length; i++) {
if (i % 2 == 0) {
numberEvens++;
}
}
Run Code Online (Sandbox Code Playgroud)
这将总是返回一个数字长度的一半的数字,因为你正在对数组中元素的数量进行mod划分,而不是对元素本身进行.添加numbers[i]到if声明中
public int[] findEvens() {
int numberEvens = 0;
for (int i = 0; i < numbers.length; i++) {
if (numbers[i] % 2 == 0) {
numberEvens++;
}
}
Run Code Online (Sandbox Code Playgroud)
看起来你有奇怪计数的同样问题