2017-04-17 70 views
1

作業,我必須建立一個10x10「位圖」,將打印一個房子的簡單圖像,建成自己的類。構造函數需要填充每個點的座標int[],這樣的值1 , 1 , 1 , 2等於座標點(1,1)和(1,2)二維位圖填充不正確的位置的對象[作業]

但是我很困惑什麼是當我嘗試打印我的數組時發生。我的一些觀點出現在錯誤的地方,有些缺失,但大多數都處於正確的位置。被填充和印刷後,位圖應該看起來像

---------      ---------- 
-o-oo----      -o-o------ 
-oo--o---      -oo-o----- 
-o----o--      -o---o---- 
oo----oo-      oo----o--- 
-o-o--o-- but my result is -o-o---o-- 
-o-o--o--      -o-o--o--- 
-o-o--o--      -o-o--o--- 
-oooooo--      -oooooo--- 
---------      ---------- 

以下是我的構造函數...

String image[][] = new String[10][10]; 

Bitmap(int a[]) { 
    //CONSTRUCTOR 

    for (int i = 0; i < 10; i++) { //set all to '-' 

     for (int j = 0; j < 10; j++) { 

     image[i][j] = "-"; 

     } 

    } 

    int c = 0; // because it takes too long to type out a proper for loop 
    for (int i : a) { //read data and plot points 

     if(c % 2 == 1) temp2 = a[c]; 
     else temp1 = a[c]; 


     if(c % 2 == 0 && c != 0) 
     image[temp1][temp2] = "o"; 
     c++; 
    } 
    } 

,這裏是我的觀點。

int points[] = { 1, 1, 1, 3, 1, 4, 2, 1, 2, 2, 2, 5, 3, 1, 3, 6, 4, 0, 4, 1, 4, 6, 4, 7, 5, 
       1, 5, 3, 5, 6, 6, 1, 6, 3, 6, 6, 7, 1, 7, 3, 7, 6, 8, 1, 8, 2, 8, 3, 8, 4, 
       8, 5, 8, 6 

它翻譯成:

(1,1) (1,3) (1,4) (2,1) (2,2) (2,5) (3,1) (3,6) (4,0) (4,1) (4,6) (4,7) (5,1) (5,3) (5,6) 
(6,1) (6,3) (6,6) (7,1) (7,3) (7,6) (8,1) (8,2) (8,3) (8,4) (8,5) (8,6) 

我的結果,另一方面,打印爲

(1,1) (1,3) (,) (2,1) (2,2) (2,4) (3,1) (3,5) (4,0) (4,1) (4,6) (,) (5,1) (5,3) (5,7) 
(6,1) (6,3) (6,6) (7,1) (7,3) (7,6) (8,1) (8,2) (8,3) (8,4) (8,5) (8,6) 

我不能告訴我在做什麼錯了,我真的不知道從哪裏開始。如果我能得到幾個指針或者對我的代碼中的缺陷發表評論,那將是非常棒的。

+0

首先我建議命名你的變量可能是'int x'和'int y'。我真的不知道爲什麼當你測試'if(c%2!= 0)'時,你應該在'c%2 == 0'時將位圖點設置爲'o'? –

+0

@SchokokuchenBäcker謝謝你的工作。在閱讀你的建議之後,我再次追溯了我的代碼,並且意識到你的答案爲什麼是正確的。如果我正在測試'c%2 == 0 && c!= 0',那麼我會在_third_迭代中而不是在_second_迭代中開始打印'o'。第二次迭代將是第一次完整集合,第三次迭代將是完成集合後的一個數字。這也使我能夠從我的if語句中排除'c!= 0'。 –

回答

0

首先我建議命名您的變量可能是int xint y。我真的不知道爲什麼你設置位圖點oc % 2 == 0應該不測試如果(c % 2 != 0)? -SchokokuchenBäcker

此評論由Schokokuchen Bäcker解決了該問題。

在上述循環中,線if(c % 2 == 0 && c != 0)被開始設置[temp1][temp2] = "o"第三迭代而非第二迭代,這導致在一個點被排除的代碼的最開始。