2013-03-22 2 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; 

Любая помощь будет оценена.

С уважением,

Sim

+5

что такое знание, – PermGenError

+1

вы должны размещать больше своего класса и как вы переопределен метод ToString() – shyam

+0

Параметр 'метод toString' используется для целей отладки *? *. Если вам нужна эта специальная печать для конечного продукта, вы должны представить свои собственные функции. –

ответ

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) + "}"; 
} 

Теперь ясно, что это будет работать только для этого конкретного типа ввода списка. Если список может быть более сложным, для создания правильного текста (и фигурных скобок) в соответствующих местах потребуется более сложная логика. Также, если «истина» и «ложь» вычисляются каким-то образом, эта логика также должна быть добавлена.

Отказ от ответственности: Указанный выше формат используется только для иллюстрации. Автор не оправдывает использование сумасшедших слепых следов и более сумасшедшего слепого индекса ...

Смежные вопросы