2013-05-19 96 views
1

所以基本上我有這個for循環的數據庫。它每次都給出不同的分數,我需要保存到一個字符串(或文件,但我猜字符串會更容易,因爲我需要它在每次新的數據庫調用時都是空的)。如何在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(); 
+0

這裏使用StringBuilder,而不是一個PrintWriter。 – JamesB

+0

請問爲什麼? – user1393500

+0

爲什麼不使用StringBuilder \ StringBuffer並將字符串保存在列表中的任何原因? –

回答

4

試試這個:

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

這實際上是我會這樣做的方式,但我總是喜歡更正答案中的代碼。 –

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(); 

希望這有助於和喜歡你的工作

+0

謝謝,這工作完美!我會在2分鐘內將此設置爲接受的答案;) – user1393500

+0

歡迎您。 –