2016-12-15 5 views
0

このアルゴリズムを解決するように求められました。これまでのところ、これは私がJavaコードに関して持っているものです。私は何かが不足しているか分からない。次のような問題は次のとおりです。 ProblemA003と呼ばれるクラスを書くこと、出力の(背景コンソールに「$」記号を使用して文字Xである)以下の形状:バックグラウンドコンソールで文字Xを印刷

コンソールに単純に出力(使用してのSystem.out ) 深さ25行79文字のコンソール画面を想定します(コンソールについては以下を参照してください)。これは "="文字で構成され、10番目の列と行ごとに番号が付けられています 形状はこのコンソール画面の中央中間の "$"は13行40列目になければならない 1つのint型パラメータ(sizeOfXという名前を付けることができます)をプログラムに入力します。このパラメータは、Xの両側の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); 

     } 


    }