2016-09-27 175 views
-3

我已經瀏覽了很多帖子,他們已經幫了很多,但沒有一個覆蓋我的問題。我正在嘗試爲班級作業打印交替的棋盤格式。我的輸出從第一行開始,每行都有一個額外的打印結束。它應該基本上重複8x8模式。這是我的代碼和我的輸出的屏幕截圖。帶有星號的java棋盤圖案

我需要知道如何改變代碼,以便我只在奇數行中獲得8個星號,而不是現在顯示的9個星號。

public class Checkerboard { 

    public static void main(String[] args) { 

     int length = 16; 
     int height = 8; 

     for (int i = 0; i <= height; i++) 
     { 
      if (i % 2 == 0) 
      { 
       System.out.print("* "); 
      } 
      else 
      { 
       System.out.print(" "); 
      } 
      for (int j = 0; j <= length; j++) 
      { 
       if (j % 2 == 0) 
       { 
        System.out.print(" "); 
       } 
       else 
       { 
        System.out.print("* "); 
       } 
      } 
      System.out.println(""); 
     } 
    } 
} 

output

+2

你的問題是? – shmosel

+0

我對此表示歉意;我需要知道如何修改代碼,以便我現在只能得到8個星號而不是9個星號。 – magusd

+2

@magusd那麼,改變你的代碼來寫更少的列。你寫了它,所以你應該知道它的哪一部分決定了。 – Biffen

回答

0

這對我的作品。如果條件爲j!= length ||,我將最後一個else語句改爲else我%2!= 0所以現在如果它是一個奇數行,它不會在最後打印出一個額外的'*'。

public class mainTest { 

public static void main(String[] args) { 

    int length = 15; 
    int height = 8; 

    for (int i = 0; i <= height; i++) 
    { 
     if (i % 2 == 0) 
     { 
      System.out.print("* "); 
     } 
     else 
     { 
      System.out.print(" "); 
     } 
     for (int j = 0; j <= length; j++) 
     { 
      if (j % 2 == 0) 
      { 
       System.out.print(" "); 
      } 
      else if (j != length || i % 2 != 0) 
      { 
       System.out.print("* "); 
      } 
     } 
     System.out.println(""); 
    } 
} 
} 
0

雖然下面的代碼段未被優化的,但它應該爲你工作。有簡化的範圍。試試看。

public static void main(String[] args) { 
    int length = 16; 
    int height = 8; 

    for (int i = 0; i <= height; i++) { 
     char first = ' '; 
     char second= '*'; 
     if (i % 2 == 0) { 
      first = '*'; 
      second = ' '; 
     } 
     for (int j = 0; j < length; j++) { 
      if (j % 2 == 0) { 
       System.out.print(first); 
      } else { 
       System.out.print(second); 
      } 
     } 
     System.out.println(""); 
    } 
}