我正在使用 Woodstock 组件开发一个 Web 应用程序。简而言之,如果下拉值等于“PRIMARY KEY”,则该函数应将表的名称(来自文本字段)存储到字符串 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 长度的值进行 cheak,您可以更改您的方法,例如
选项 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());
*
关于java - StringBuilder 不附加空格吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17312047/