不确定标题是否解释了我真正想做的事情,
我有一条信息,目前打印为
[[1/2, 1/2], 1]
但是我需要它以
格式打印出来{{true@1/2, false@1/2}@1}
我将如何进行此操作,我确实设置了toString方法但是我不确定如何获得“true @”并删除[[,我得到了{但是。
目前我有,
@Override
public String toString() {
String s = "{" + this.knowledge + "}";
return s;
非常感谢任何帮助。
此致
辛
答案 0 :(得分: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 "{{true@" + strs[0] + ", false@" + strs[1]+ "}@" + strs[2] + "}";
}
答案 1 :(得分: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
是某些已知集合(集合)是正确的,那么您可以创建一种格式方法,该方法能够获取已知元素并将它们放在正确的位置。如果“true”和“false”是硬编码的文本字符串,它可能看起来像:
public String formatKnowledge(List list) {
return "{{true@" + ((List)list.get(0)).get(0) + ", false@" +
((List)list.get(0)).get(1) + "}@" + list.get(1) + "}";
}
现在显然这只适用于那种确切类型的列表输入。如果列表可能更复杂,则需要更复杂的逻辑来在适当的位置创建正确的文本(和大括号)。此外,如果以某种方式计算“true”和“false”,则还需要添加该逻辑。
免责声明:以上格式方法仅供参考。作者不宽恕使用疯狂的盲人和疯狂的盲目索引...