2013-03-22 54 views
0

不知道,如果標題解釋了什麼是我真正想做的事情,但是,以特定的格式返回一個值(JAVA)

我有一個資料片,目前打印出的

[[1/2, 1/2], 1] 

但是我需要它的格式

{{[email protected]/2, [email protected]/2}@1} 

我怎麼會去這樣做打印出來,我有我的toString方法設定,但我不知道如何讓「真@」並刪除[[,我得到了{但是。

目前我有,

@Override 
public String toString() { 
    String s = "{" + this.knowledge + "}"; 
    return s; 

任何幫助將非常感激。

問候,

+5

什麼是知識, – PermGenError 2013-03-22 09:05:59

+1

你要發佈更多類的,你如何重寫 – shyam 2013-03-22 09:06:15

+0

的'toString'方法用於*調試目的的toString()方法*?。如果你想爲最終產品定製打印,你應該引入你自己的功能。 – 2013-03-22 09:09:57

回答

1

我假設你只能訪問這種格式的字符串(this.knowledge):[[str,str], str],在這種情況下,下面的解決方案將工作:

@Override 
public String toString() { 
    StringBuilder strB = new StringBuilder(); 
    for (int i=0; i<this.knowledge.length(); i++) { 
     if(this.knowledge.charAt(i)!='[' && this.knowledge.charAt(i)!=']' && this.knowledge.charAt(i)!=',') 
      strB.append(this.knowledge.charAt(i)); 
    } 
    String[] strs = strB.toString().split("\\s+"); 
    return "{{[email protected]" + strs[0] + ", [email protected]" + strs[1]+ "}@" + strs[2] + "}"; 
} 
0

不知道這個答案說明了你真正想做的事,然而,

的「資料片」你看起來很像默認打印你可能會從列表中獲得。我能看到的東西「相似」:

List<String> inner = new ArrayList<String>(); 
inner.add("1/2"); 
inner.add("1/2"); 

List<Object> outer = new ArrayList<Object>(); 
outer.add(inner); 
outer.add("1"); 

System.out.println(outer); 

如果這是正確的假設,knowledge是一些已知集合(集合),你可以創建一個格式化方法,將能夠利用已知的元素和把它們放在正確的地方。如果「真」和「假」是硬編碼的文本字符串,它可能看起來像:

public String formatKnowledge(List list) { 
    return "{{[email protected]" + ((List)list.get(0)).get(0) + ", [email protected]" + 
     ((List)list.get(0)).get(1) + "}@" + list.get(1) + "}"; 
} 

現在顯然這將僅適用於精確的類型列表中輸入的工作。如果列表可能更加複雜,將需要更復雜的邏輯,以在適當的位置正確的文本(和支撐)。另外,如果以某種方式計算「真」和「假」,則還需要添加該邏輯。

聲明:上述格式方法是僅用於說明目的。作者不寬容使用瘋狂的盲注和瘋狂的盲索引...