问题是这样的:有四个参数var1,var2,var3,var4.都是String类型。我想得到这四个参数连接体。连接形式是,如果参数为空,则用四个空格代替。比如传入四个参数为:'aaaa',null,'cccc',null则想要得到的字符串为:'aaaa    cccc    '.我用StringBuffer来相加,可是总是自动把空格给去掉了。请高手指教,谢谢。

解决方案 »

  1.   

    StringBuffer packageCode = new StringBuffer(packageForm.getOptionCode1() == null ? "    " : packageForm.getOptionCode1());packageCode = packageCode.append(packageForm.getOptionCode2() == null ? "    " : packageForm.getOptionCode2()).append(packageForm.getContractType() == null ? "     " : packageForm.getContractType()).append(packageForm.getSfwContractType() == null ? "     " : packageForm.getSfwContractType());packageForm里的四个值分别为:"aaaa",null,"cccc",null.可是输出结果却是"aaaacccc"
      

  2.   

    String[] s = new String[]{"aa", null, "BBBB", null};
    StringBuilder sb = new StringBuilder();
    String temp;
    for(String x:s) {
    temp = x==null ? "  " : x;
    sb.append(temp);
    }
    System.out.println(sb.toString());
      

  3.   

    Scanner in=new Scanner(System.in);
    StringBuffer[] val=new StringBuffer[4];
    for(int i=0;i<4;i++)
        val[i]=new StringBuffer(in.nextLine());
    for(int i=1;i<4;i++)
    {
    val[0].append(val[i]);
    if(val[i].length()==0)
       val[0].append("    ");
    }
    System.out.println(val[0]);
    我也贴一个
      

  4.   

    String[] s = new String[]{"aa", null, "BBBB", null};
    StringBuilder sb = new StringBuilder();
    String temp;
    for(String x:s) {
    temp = x==null ? "  " : x;
    sb.append(temp);
    }
    System.out.println(sb.toString());这个不是很明白,一是我在eclipse中应用StringBuilder sb = new StringBuilder();这句,为什么会报找不到StringBuilder这个类的错误?
    二是for(String x:s) 这个没看懂是怎么用的。
      

  5.   

    for(String x:s) {
    temp = x==null ? " " : x;
    sb.append(temp);
    }foreach 循环等价于for(int i=0; i<s.length; i++) {
    temp = s[i]==null ? " " : s[i];
    sb.append(temp);
    }foreach、StringBuilder 都需要 JDK 1.5 以上版本支持的。如果你装的 JDK 是 1.5 以上的版本的话,你需要在 Eclipse 设置一下:Window --> Preferences... --> Java --> Complier 将“Complier complance level”改到 5.0 即可。如果你的 JDK 是 1.5 以下版本的,那 foreach、StringBuilder 就不能使用,foreach 用 for 代替,StringBuilder 用 StringBuffer 代替。
      

  6.   

    十分感谢。我说的嘛,原来是因为我的JDK是1.4的。
      

  7.   

    如果不能用JDK1.5的StringBuilder ,那么这个问题该如何解决呢?
      

  8.   

    使用 StringBuffer 代替啊String[] s = new String[] { "aaaa", null, "BBBB", null, "CCCC" };
    StringBuffer sb = new StringBuffer();
    for (int i=0; i<s.length; i++) {
    sb.append(s[i] == null ? " " : s[i]);
    }
    System.out.println(sb.toString());不过我看了你的代码,问题好像不是在 StringBuffer 上,有可能 packageForm.getOptionCode2() 这样得到的不可能是 null,很可能得到的是空字符串,你需要检查一下 packageForm 中的方法。
      

  9.   

    如果楼主的是web程序,到页面上空格不见了的话,这种情况是有可能的
    是要把那句换成&nbsp;才可以
    sb.append(s[i] == null ? "&nbsp;&nbsp;&nbsp;&nbsp;" : s[i]);