我有这个程序:
class PrintOdd {
public static void main(String[] args) {
int num = 1;
int product = 1;
int oddArray[][] = new int[10][7];
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 7; j++) {
if ((num < 100) && (num % 2 != 0)) {
oddArray[i][j] = num;
num++;
} else {
num++;
}
}
}
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 7; j++) {
System.out.print(oddArray[i][j] + "\t ");
}
System.out.print("\n ");
}
}
}
和结果:
1 0 3 0 5 0 7
0 9 0 11 0 13 0
15 0 17 0 19 0 21
0 23 0 25 0 27 0
29 0 31 0 33 0 35
0 37 0 39 0 41 0
43 0 45 0 47 0 49
0 51 0 53 0 55 0
57 0 59 0 61 0 63
0 65 0 67 0 69 0
此代码打印0到99之间的奇数,但从上面的输出中,它在奇数之间打印零。任何人都可以告诉我零的来源,因为我不明白。此代码打印0到99之间的奇数,但从上面的输出中,它在奇数之间打印零。
答案 0 :(得分:0)
数组将使用全零进行初始化,而您只填充了一半的插槽。对于j
为偶数的每个num
,该数组在该插槽上仍将包含零。
答案 1 :(得分:0)
由于测试( num % 2 !=0)
,仅当num为奇数时才为真,您只是将值赋给数组中的奇数位置。其余部分未被触及并包含初始值,在创建数组时将其设置为0.
如果你想要的是一个只有奇数的数组,试试这个:一次增加2个数字(所以你跳过所有偶数)。你不再需要测试奇数,你可以删除相应的else子句。您还需要一个只有一半大小的阵列。
所以:
for(int j=0; j<7; j++){
if(num < 100){
oddArray[i][j]= num;
num+=2;
}
}
最后的评论:当break
达到100时,你可能想查看num
语句跳出循环。使用当前代码,循环一直持续到结束而不做任何事情。
答案 2 :(得分:0)
您在所有情况下(奇数/偶数)增加i,j的错误,请尝试以下代码:
for(int i=0; i<10; i++){
for(int j=0; j<7; j++){
if((num < 100) &&( num % 2 !=0) ){
oddArray[i][j]= num;
num++;
}else{
num++;
j--;
}
}
}