Java StringBuilder不附加空格吗?

Java StringBuilder不附加空格吗?,java,Java,我正在使用Woodstock组件开发一个web应用程序。简而言之,如果下拉值等于“primaryKey”,则函数应将表名(来自textfield)存储到字符串pk/primaryKey中 我目前面临的问题是,从函数中获得的结果是: "abc" 而不是 "a, b, c" 为什么会这样 public void addPK(TextField tf, DropDown dd, StringBuilder pk, int val) { if (((String) dd.getValue()

我正在使用Woodstock组件开发一个web应用程序。简而言之,如果下拉值等于“primaryKey”,则函数应将表名(来自textfield)存储到字符串pk/primaryKey中

我目前面临的问题是,从函数中获得的结果是:

"abc"
而不是

"a, b, c"
为什么会这样

public void addPK(TextField tf, DropDown dd, StringBuilder pk, int val) {
    if (((String) dd.getValue()).equals("PRIMARY KEY")) {
        if (val == 0) {
            pk.append((String) tf.getValue());
            val++;
        } else {
            pk.append(", " + (String) tf.getValue());
        }
    }
}


public String createButton1_action() {
    StringBuilder primaryKey = new StringBuilder();
    int pkCheck = 0;

    addPK(column_TF1, pkDropDown1, primaryKey, pkCheck);
    addPK(column_TF2, pkDropDown2, primaryKey, pkCheck);
    addPK(column_TF3, pkDropDown3, primaryKey, pkCheck);
    .
    .
}

谢谢。

因为您正在发送一个值为0的val参数

  int pkCheck = 0;   

    addPK(column_TF1, pkDropDown1, primaryKey, pkCheck); // value is 0 here
和addpK方法

if (val == 0) {
    pk.append((String) tf.getValue());
    val++;
}

因此,为了获得所需的结果,您需要将pCheck的值设置为其他值,而不是0。您调试过了吗
val
始终保持在
0
。在方法中修改它没有效果

i、 e.执行
val++
不会改变
pkCheck



仅供参考:

调用方法“addPK”时,pkcheck值始终为零。S对于该值,可以在每次调用后检查增量pkcheck值,也可以使用stringbuider长度的值进行检查,您可以像这样更改方法

选项1.

选项2.
*如果您使用的是StringBuilder或StringBuffer,最佳做法是使用追加操作而不是“+”运算符

pk.append(", " + (String) tf.getValue());
替换为

pk.append(“,”).append((字符串)tf.getValue())*

pkCheck
始终为0<代码>val++
不会影响这一点,因为
如果
已经执行,则不会执行
否则
。谢谢大家。实际上,我错过了这么简单的一件事。我认为OP的意图是发送零,但认为val++会改变外部值pkCheck@epoch .. 您正在将参数作为值传递。因此,它将更改本地范围的val。。但pcheckes值不会更改
public int addPK(TextField tf, DropDown dd, StringBuilder pk, int val) {
    if (((String) dd.getValue()).equals("PRIMARY KEY")) {
        if (val == 0) {
            pk.append((String) tf.getValue());
            val++;
        } else {
            pk.append(", " + (String) tf.getValue());
        }
    }
    return val;
}


public String createButton1_action() {
    StringBuilder primaryKey = new StringBuilder();
    int pkCheck = 0;

    pkCheck = addPK(column_TF1, pkDropDown1, primaryKey, pkCheck);
    pkCheck = addPK(column_TF2, pkDropDown2, primaryKey, pkCheck);
    pkCheck = addPK(column_TF3, pkDropDown3, primaryKey, pkCheck);
    .
    .
}
pk.append(", " + (String) tf.getValue());