2016-10-11 12 views
-1

私は、ほとんどのGUIのように項目が表示されるテキストベースの「ショップ」を作っています。ショップインターフェースの文字列操作ですか?

__________________________________________________ 
| Item 1   | Item 2  | Item 3  | 
| Item : price  | Item:price | Item:price | 
| Item weight  | item weight | item weight | 
--------------------------------------------------- 
| item 4   | item 5  | item 6  | 
--------------------------------------------------- 

DMG印刷aswellを持っていますが、何も特別になる剣の例外で使用する同じ印刷機能を、作成したすべての項目:この種のように。彼らはどこか別の場所から値を取得し、今私は私がちょうどプリント()、プリント()、プリント()を行うことができないことを理解

public void print() 
    { 
     System.out.println("#_____________________________________"); 
     System.out.println("# -Name of item: " + itemName + "-"); 
     System.out.println("# Item description: " + desc); 
     System.out.println("# Item value: " + value + " gold"); 
     System.out.println("# Item weight: " + weight + "kg"); 
     System.out.println("# Item action: " + action); 
    } 

。彼らはお互いの隣にいるでしょう。私の主な関心事は、アイテムが毎回まったく同じ場所に表示されているボックスを作成し、その説明が時にはかなり長いと仮定すると、ボックスの内側にすべてのテキストを囲みます。私はおそらくそのフィットを作るために使用することができるクラスを変更する記述があります。私は誰か他の人から交換部分を得たので、私はあまりにもそれの "コーディング"に精通していない。

public String formatDesc(String desc) 
    { 
     desc = "\n#\t" + desc; 
     desc += "\n"; // Needed to handle last line correctly 
     desc = desc.replaceAll("(.{1,30})\\s+", "$1\n#\t"); 
     return desc; 
    } 

答えて

1

右のボックスを配置するには、各列のすべてのアイテムの最大長がわかります。 - 私は今、ITEM1を印刷した場合、私は印刷された文字列の長さを見て、その最大値まで不足しているスペースを計算します。その違いについて

int max_column1=//initialized via maximum length all items in each column 

int difference=max_column1-print().length() 

と印刷スペースを。その後、 '|'

またはformatDesc()メソッドは、指定された最大の列幅で改行する可能性があります。

+0

私は既にフルラインを占めるような長い説明をどのように扱いますか? – Peebl

+1

実際、私は店のメニューに表示される説明は必要ありません、私はそれを行ってもいいですが、あなたの答えをありがとう! – Peebl