繁体   English   中英

以特定格式返回值(java)

[英]Returning a value in a specific format (java)

不知道标题是否说明了我真正想做的事,

我有一条信息,目前以

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

但是我需要它以以下格式打印

{{true@1/2, false@1/2}@1}

我该怎么做,我确实设置了toString方法,但是我不确定如何获取“ true @”并删除[[,但是我得到了{

我现在有

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

任何帮助将非常感激。

问候,

我假设您只能访问以下格式的字符串(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] + "}";
}

不知道这个答案是否可以解释您真正想做什么,但是,

您拥有的“信息”看起来很像您从列表列表中获得的默认打印输出。 我能够看到与“类似”的东西:

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”,则还需要添加该逻辑。

免责声明:上面的格式方法仅用于说明目的。 作者不容忍使用疯狂的盲目转换和疯狂的盲目索引...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM