2

如果问题有点含糊,我很抱歉,所以我会尝试解释一下。

我得到了这个代码:

    public String toString()
{
    String s = "text.\n";

    for (Klus k : alleKlussen)
    {
        s += k.toString() + ".\n";
    }
    return s;
}

但我想为不同的条件制作不同的循环。例如,“Klus”有几个变量,例如:状态、日期等。

我对java还不是很有经验,但是有没有可能做这样的事情:

for (Klus k : alleKlussen; status = "completed")
{..}

我知道这是错误的,但我希望它显示状态为“已完成”的所有“Klus”对象以及状态为“未完成”的所有“Klus”对象。

谢谢,如果有什么不清楚的地方或者我用了错误的词,请告诉我。

编辑:

它应该是这样的:

if (k.getStatus().equals("completed"){
  String s = "completed ones \n"
  s += k.toString() + ".\n"; //get all completed ones
}
if (k.getStatus().equals("uncompleted"){
      String s = "uncompleted ones \n"
      s += k.toString() + ".\n"; //get all uncompleted ones
    }
4

5 回答 5

4

只需在for()循环内添加条件:

for (Klus k : alleKlussen) {
    if (k.getStatus().equals("completed")) {
        s += k.toString() + ".\n";
    }
}

从问题中的附加信息来看,似乎是以下内容:

String completed = "completed ones \n";
String uncompleted = "uncompleted ones \n";

for (Klus k : alleKlussen) {

    if (k.getStatus().equals("completed")) {
      completed += k.toString() + ".\n"; //get all completed ones
    }
    else if (k.getStatus().equals("uncompleted")) {
       uncompleted += k.toString() + ".\n"; //get all uncompleted ones
    }
}

您还应该考虑使用StringBuilder来创建结果字符串,从而减少内存开销。

于 2013-04-05T11:03:52.473 回答
2

条件多的可以用switch,方便阅读

对于(Klus k : alleKlussen){

switch(k.getStatus()){
       case "completed": ....
                          break;

       case "uncompleted": ....
                            break;

        default: ...
}

}

请注意,仅在 Java 7 中支持使用字符串文字进行切换。

于 2013-04-05T11:08:17.367 回答
0

为什么不只做标准的 if 条件,例如:

if ("".equals(k.getStatus())) {

} else if ("completed".equals(k.getStatus())) {

}
于 2013-04-05T11:04:28.423 回答
0
   Use this - this toString will print only Klus are completed.
 public String toString()
    {
        String s = "text.\n";

        for (Klus k : alleKlussen)
        {
            if("completed".equals(k.getStatus ()))
            s += k.toString() + ".\n";
        }
        return s;
    }
于 2013-04-05T11:05:07.767 回答
0

要在完成的后面追加未完成的,试试这个(我建议使用枚举,但欢迎您坚持使用字符串。但这仅适用于 Java SE 7!):

状态.java:

// Makes switches easy to use and String typos are impossible
public enum State { COMPLETE, INCOMPLETE };

用枚举替换您当前的字符串“状态”,如下所示:

Klus:java

public class Klus {
   private State state;
   ...
   public State getState() { return this.state; }
   ...
}

现在在 for 循环中的 switch 中使用它。使用两个字符串,一个代表完整,一个代表不完整。最后附加它们。(注意使用StringBuilder而不是str +=...

包含您的 toString() 的类:

public String toString() {
    StringBuilder complete = new StringBuilder("completed ones \n"), 
                  uncompleted = new StringBuilder("uncompleted ones \n");
    for(Klus k : alleKlussen) {
       switch(k.getStatus())
       case COMPLETE:
          complete.append(k.toString()).append(".\n"); break;
       case INCOMPLETE:
          uncompleted.append(k.toString()).append(".\n"); break;
       default:
       }
    }

    complete.append(uncompleted.toString();

    return complete.toString();
}
于 2013-04-05T11:22:38.743 回答