簡體   English   中英

StringBuilder是否不附加空格?

[英]Does StringBuilder not append whitespaces?

我正在使用Woodstock組件開發Web應用程序。 簡而言之,如果下拉值等於“ PRIMARY KEY”,則該函數應將表的名稱(來自文本字段)存儲在String 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);
    .
    .
}

謝謝。

調用方法“ addPK”時,pkcheck值始終為零。 S代表每次調用后增加pkcheck值,或者您可以檢查stringbuider長度的值,可以更改方法,例如

選項1。

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


選項2。

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);
    .
    .
}

*如果您使用的是StringBuilder或StringBuffer,則最佳實踐是使用附加操作而不是'+'運算符

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

用。。。來代替
pk.append(", ").append((String) tf.getValue()); *

因為您要發送值為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 在您的方法中修改它無效。

即執行val++ 不會更改pkCheck


供參考: java-is-pass-by-value

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM