2016-12-15 62 views
0

我被要求解決這個算法。到目前爲止,這是我對java代碼的看法。我不知道我失去了什麼。問題如下: 編寫一個叫做ProblemA003類輸出的下面形狀(這是使用背景控制檯上的「$」符號的字母X):在背景控制檯上打印字母X

簡單地輸出到控制檯(使用的System.out ) 假設一個25行深的控制檯屏幕和79個字符的寬度(參見下面的控制檯 - 它包含「=」字符,每10列和每行有相應的編號) 形狀必須以此控制檯屏幕爲中心,中間的「$」應該在第13行第40列中 作爲程序的一個單一的int參數的輸入(你可以命名爲sizeOfX)。這個參數將指出在X的兩邊有多少「$」中間的「$」,你可以簡單地通過這個參數通過「main」方法。有關參數sizeOfX的更爲詳細的描述,請參閱下面的示例:sizeOfX = 5 注意:參數sizeOfX只能取值1-9(包括1和9)。當然,sizeOfX的值越大,程序必須產生的X的大小越大。

我的方法:

private static void MakeACross(int number) { 
    int start = 0; 
    int end = number - 1; 
    for (int i = 0; i < number; i++) { 
     System.out.print("=="); 
     for (int j = 0; j < number; j++) { 
      System.out.print("=="); 
      if (start == end && j == i) { 
       System.out.print('$'); 
      } else if (start == j || end == j) { 
       System.out.print('$'); 
      } else { 
       System.out.print(' '); 
      } 
     } 
     start++; 
     end--; 
     System.out.println("=="); 
    } 
} 

任何人誰可以幫我我如何能進一步解決這個問題,將不勝感激。如果輸入是5(即sizeOfX = 5),你的程序應該產生完全的輸出(注意行10和行20的第一列中的「1」和「2」)。 )

回答

0

也許這會工作

public void PrintX(int number) 
    { 


     int headLoc = 0, tailLoc = number - 1; 

     for (int i = 0; i < number; i++) 
     { 
      string line = ""; 
      for (int j = 0; j < number; j++) 
      { 
       if (j == headLoc || j == tailLoc) 
       { 
        line += "="; 
       } 
       else 
       { 
        line += " "; 
       } 
      } 

      headLoc++; 
      tailLoc--; 
      System.out.println(line); 

     } 


    }