【问题标题】:How to write data to a String when in a for-loop在for循环中如何将数据写入字符串
【发布时间】:2013-05-14 10:25:48
【问题描述】:

所以基本上我有这个数据库,它是一个 for 循环。它每次都会给出不同的分数,我需要将其保存到字符串(或文件,但我想字符串会更容易,因为我需要在每次新调用数据库时它都为空)。

我想通过循环存储所有分数,然后在每个分数之后添加一个 , (以保持它们分开),但我的代码不起作用,因为部分代码在 for 循环之外。我该如何解决?还是有更好的/其他方法来做我想做的事情?

DatabaseHandler db = new DatabaseHandler(camera.this);
List<Database> contacts = db.getAllContacts();
for (Database contact : contacts) {
    String test = contact.getMP();
    StringWriter stringWriter = new StringWriter();
    PrintWriter printWriter = new PrintWriter(stringWriter);
    printWriter.println(test);
}  
printWriter.flush();
printWriter.close();
return stringWriter.toString();

【问题讨论】:

  • 在此处使用 StringBuilder,而不是 PrintWriter。
  • 有什么理由不使用 StringBuilder\StringBuffer 并将字符串保存在 List 中?
  • ok,将我的代码更改为 Stringbuilder 代码,因为它也完全符合我的要求 ^^ 谢谢

标签: java android string sqlite for-loop


【解决方案1】:

试试这个

DatabaseHandler db = new DatabaseHandler(camera.this);
List<Database> contacts = db.getAllContacts();
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
boolean first = true;
for (Database contact : contacts) {
   if(!first) printWriter.print(", ");
   else first = false;
   String test = contact.getMP();
   printWriter.print(test);      
}      
printWriter.flush();
printWriter.close();
return stringWriter.toString();

希望这对您有所帮助并享受您的工作

【讨论】:

  • 谢谢你,这工作完美!我将在 2 分钟内将此设置为已接受的答案;)
【解决方案2】:

试试这个:

StringBuilder sb = new StringBuilder();
for (Database contact : contacts) { 
    if(sb.length > 0) {
        sb.append(", ");
    }
    sb.append(contact.getMP());
}
...
sb.toString();

【讨论】:

  • 这实际上是我会这样做的方式,但我总是更喜欢更正答案中的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-17
  • 1970-01-01
  • 2013-02-24
相关资源
最近更新 更多