我有以下代码
String Roletext=null;
for(String text1:Rolelist1)
{
Roletext+=text1+",";
}
我想将列表转换为字符串。然后我显示了价值。它将null作为第一个值。如果未初始化,则会显示错误。请帮忙。
答案 0 :(得分:3)
您的问题解决方案:
String Roletext="";
for(String text1:Rolelist1)
{
Roletext +=text1+",";
}
原因是当您与null
进行串联时,字符串会将值附加到"null"
我的建议:
我建议您使用StringBuilder
而不是字符串连接。
StringBuilder b=new StringBuilder();
for(String text1:Rolelist1)
{
b.append(text1).append(",");
}
String Roletext=b.toString().replaceAll(",$", "");//get rid of last comma
答案 1 :(得分:2)
您应首先初始化您的String
String Roletext="";
int i;
for(i = 0;i < Rolelist1.size() - 1;i++)
{
Roletext+=Rolelist1.get(i)+",";
}
Roletext+=Rolelist1.get(i);
或者为了获得更好的效果,您可以使用StringBuilder
。
StringBuilder sb=new StringBuilder();
sb.append("Your String");
答案 2 :(得分:0)
像这样定义:
String Roletext ="";
答案 3 :(得分:0)
这是推荐使用StringBuilder
的完美示例:
StringBuilder roleText = new StringBuilder();
for(String text1:Rolelist1) {
if(roleText.length() > 0) {
roleText.append(",");
}
roleText.append(text1);
}
顺便说一下:if构造的长度是我用来阻止任何前导或尾随逗号的那个,它是阻止这个imo的最优雅的解决方案; - )
答案 4 :(得分:0)
您必须先初始化字符串。
String Roletext="";
但是使用String
对象使用循环构建字符串不是一个好习惯。请改用StringBuilder:
StringBuilder sb = new StringBuilder();
for(String text1 : rolelist1) {
sb.append(text1);
}
roletext = sb.toString();
答案 5 :(得分:0)
String Roletext="";
for(String text1:Rolelist1)
{
Roletext+=text1+",";
}
现在它不会占用任何空值,如果String text =“”,则最初字符串为空。 但是如果我们用null初始化它,那么String将第一个值作为null。 Null表示一些随机值,它并不意味着为空。
答案 6 :(得分:0)
这样做
String Roletext=null;
Rolelist1.remove(Collections.singleton(null)); //This line will remove all null from Rolelist1
for(String text1:Rolelist1)
{
Roletext+=text1+",";
}
答案 7 :(得分:0)
String Roletext = Arrays.toString(Rolelist1.toArray());
答案 8 :(得分:-1)
使用Joiner API,这样可以更加优雅地将列表与分隔符连接起来:
Joiner.on(",").join(Rolelist1)