0

我有以下java代码:

String strTest = null;

for (AlternativeEntity alternativeEntity : msg.Guidance()
      .getAlternatives()) {

    strTest = strTest + alternativeEntity.getArrivalStation().getName() + ", ";

}

输出如下所示:

nullabc, xyz, oop, 

我该如何解决这个问题和非常糟糕的字符格式?如果我可以创建这样的输出,那就太好了:

abc, xyz, oop
4

9 回答 9

3

初始化strTest为:

String strTest = "";

另外,删除最后一个逗号,

strTest=strTest.substring(0, strTest.length()-1);
于 2013-10-10T11:51:27.497 回答
3

您可以使用GuavaJoiner#join(Iterable parts)。例如:

Joiner joiner = Joiner.on(", ").skipNulls();
String result = joiner.join(list);
System.out.println(result);

在这里,列表的所有元素都将打印逗号分隔,没有任何尾随逗号。此外,所有null元素都将被跳过。

更多信息:

于 2013-10-10T11:52:31.957 回答
3

将您的字符串初始化为“”:

 String strTest = "";

或者,您应该使用 StringBuilder:

 StringBuilder builder = new StringBuilder();

 for (AlternativeEntity alternativeEntity : msg.Guidance()
  .getAlternatives()) {

     builder.append(alternativeEntity.getArrivalStation().getName()).append(", ");

 }

这将产生更好的性能。

于 2013-10-10T11:52:39.113 回答
1

Java为此提供了StringBuilder类,简单易用。

    StringBuilder str = new StringBuilder("India ");

     //to append "Hi"
    str.append("Hi");

    // print the whole string
    System.out.println("The string is "+str)

输出将是:字符串是India Hi

单击此处了解有关 StringBuilder 类的更多信息

于 2013-10-10T11:56:42.807 回答
0
String strTest = null;

for (AlternativeEntity alternativeEntity : msg.Guidance().getAlternatives()) {
  String name = alternativeEntity.getArrivalStation().getName();
  strTest = (strTest == null) ? name : strTest +  ", " + name;
}

如果列表很长,您应该使用 aStringBuilder 而不是Stringfor,strTest因为上面的代码在每次迭代时都会构建一个新字符串:复制太多。

于 2013-10-10T12:00:29.890 回答
0

替换字符串 strTest = null; 通过字符串strTest =“”;

于 2013-10-10T11:51:52.157 回答
0

改变

 String strTest = null;

String strTest = "";
于 2013-10-10T11:51:53.853 回答
0

你为什么不使用:

String strTest = "";

最后:

if(strTest.endsWith(", "))
   strTest = strTest.substring(0, strTest.length()-2);
于 2013-10-10T11:52:11.990 回答
0

初始化String strTest="";

跳过最后一个逗号',' 在 For 循环外使用:

strTest = strTest.substring(0,strTest.trim().length()-1);
于 2013-10-10T11:54:24.387 回答