2016-10-11 52 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打印藏漢劍,但沒有什麼特別。

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

爲了讓箱子放置正確,我會找出每列中所有項目的最大長度。如果I'm現在印刷物品1我想看看打印字符串的長度和計算丟失的空間達到最大如此:

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

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

和打印空間的這種差別。之後,'|'

或者您的formatDesc()方法可以在指定的最大列寬處進行換行。

+0

我將如何處理已經佔用整行的長描述? – Peebl

+1

其實,我不需要在商店菜單中顯示說明,謝謝你的回答,但我會給出一個去! – Peebl