&引用;如果;或;其中;java中arraylist的for循环?
如果这个问题有点含糊,我很抱歉,我会尽力解释的 我得到了这个密码:&引用;如果;或;其中;java中arraylist的for循环?,java,for-loop,arraylist,conditional-statements,Java,For Loop,Arraylist,Conditional Statements,如果这个问题有点含糊,我很抱歉,我会尽力解释的 我得到了这个密码: public String toString() { String s = "text.\n"; for (Klus k : alleKlussen) { s += k.toString() + ".\n"; } return s; } 但是我想为不同的条件做不同的循环。 例如,“Klus”有两个变量,如:状态、日期等 我对java还不是很有经验,但是可以这样做
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")
{..}
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
}
我知道这是错误的,但我希望它显示状态为“已完成”的所有“Klus”对象和状态为“未完成”的所有“Klus”对象
谢谢,如果有什么不清楚或者我用错了词,请告诉我
编辑:
它应该是这样的:
for (Klus k : alleKlussen; status = "completed")
{..}
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
}
只需在
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
}
}
你也应该考虑使用A来创建结果字符串,这会减少内存开销。
为什么不做标准if条件,比如:if ("".equals(k.getStatus())) {
} else if ("completed".equals(k.getStatus())) {
}
如果您有许多条件,并且易于阅读,则可以使用该开关 对于(Klus k:alleKlussen) { }
请注意,Java 7仅支持字符串文字。若要在已完成的文字之后追加未完成的文字,请尝试此操作(我建议使用枚举,但欢迎您坚持使用字符串。但这仅适用于Java SE 7!): State.java:
// Makes switches easy to use and String typos are impossible
public enum State { COMPLETE, INCOMPLETE };
将当前字符串“state”替换为枚举,如下所示:
Klus:java
public class Klus {
private State state;
...
public State getState() { return this.state; }
...
}
现在在for循环的开关中使用它。使用两个字符串,一个表示完整,一个表示不完整。最后附加它们。(注意使用StringBuilder而不是str+=…)
包含toString()的类:
请使用
StringBuilder
进行迭代String
连接!这么多东西烧掉了…在你的for循环中,你肯定会想要一个如果
的话?我想我解释得有点错误,我编辑了我的问题你的编辑基本上显示了答案。我现在看不到这个问题。您使用的是什么版本的java?一个拥有20k
的人代表建议使用=
进行字符串值比较?难以置信。@R.J这不是我的建议,我的建议是在大多数语言中使用标准约定-if语句-等式检查是我对Java缺乏专门知识,但我不认为这有损于实际建议。令人难以置信的判断,也许,就像你期待我在世界上有2万个代表一样。谢谢!我忘记了if语句,但它不是我想要的,我想我解释得有点错误。我编辑了我的问题这对所有已完成的问题都有效,但我应该如何对未完成的问题进行同样的处理?只需在toString()中创建另一个for循环?@colin检查我的更新答案-这是您需要的吗?之后有两个不同的字符串,包含来自已完成和未完成对象的信息。你可以使用两个for()
循环,但是你需要重复你的列表两次根据@colin的需要,他总是可以连接两个字符串并返回结果hanks,这对我来说很有用。我只是需要一个完整和未完成的名单,这就是这样!为什么,对于枚举来说,这是一个完美的例子,即使支持字符串文字谢谢您的回答,但在这种情况下,它应该如何仅选择“已完成”的“Klus”对象?@Colin在这种情况下,根据对象状态,“仅”获取“Klus”对象是不可能的。您需要遍历对象并检查。@Simon我同意,但在最初的问题中,用户没有使用枚举。他使用状态作为字符串文本。我认为这通常也会起作用,但另一个更简单,因为我还没有学会用例。无论如何谢谢你!谢谢你的回答,我看到了很多我还没听说的事情。但也许在最终版本中,我也可以对状态使用这种方法。谢谢。@colin不客气。安德烈亚斯的答案帮助你摆脱了所有额外的麻烦,不过:-我会玩得很开心!
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();
}