多维数组在奇数数组之间输出零

时间:2014-09-17 11:24:56

标签: java

我有这个程序:

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之间的奇数,但从上面的输出中,它在奇数之间打印零。

3 个答案:

答案 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--;
    }
 }
}