我有下面的方法,它接受一个由逗号分隔的cardodes字符串(也可以是一个单一的汽车代码)和holdReason,但我的问题是关于cardodes的。
例如,carcodes可以如下所示:"ABC1234, TYZ8765"
public PostReturn scan(String carcode, String holdReason) {
PostReturn pr = new PostReturn();
if (Utils.nullOrBlank(carcode)) {
// cannot lookup
pr.setErrorMsg("No carcode to lookup");
return pr;
}
// trim it first/remove white spaces
String[] carcodes = carcode.trim().split("\\s*,\\s*");
for (String carId: carcodes) {
Kitcarcode kb = Kitcarcode.parsecarcode(carId);
if (kb == null) {
// invalid carId
pr.setErrorMsg(carId + " was invalid - could not be parsed");
return pr;
}
// lookup the kit
CarHandler cph = CarHandler.findByKitcarcode(kb);
// mark it as on hold
cph.setAttribute(CarHandler.PREPROCESSING_HOLD_DATE, Utils.getDateAsMDYYYY(new Date()));
cph.setAttribute(CarHandler.PREPROCESSING_HOLD_REASON, holdReason);
cph.storeChanges();
carProcessing(kb, cph);
// confirm msg
pr.setSuccessMsg(kb + " is marked as on carprocessing hold for reason: " + holdReason);
}
return pr;
}
我主要关注这行代码:pr.setSuccessMsg(kb + " is marked as on carprocessing hold for reason: " + holdReason);
如果有多个汽车代码,用逗号分隔,例如"ABC1234,TYZ8765"
由上面的代码行打印的消息是TYZ8765 is marked as on carprocessing hold for reason xyz
。因为有两个carcodes,可以像下面这样打印吗?ABC1234 and TYZ8765 are marked as on carprocessing hod for reason xyz
1条答案
按热度按时间8hhllhi21#
看起来,打印的消息只包含最后一个 carcode 的原因是因为它所在的 * for循环 * 在每次迭代期间都会简单地覆盖上一个 pr.setSuccessMsg 调用。
由于 pr 和 holdReason 在 for-loop 中没有更改,因此您可以将其放置在 for-loop 之后。
此外,在 for-loop 中,您可以使用 kb 值填充 String 值。
我们将使用 * for循环 * 来递增 count 值。
这将用于确定我们的 strings 值是否被1、2或更多 kb 值填充-这将确定我们的 strings 值是否应包含逗号或 “和”。
在 * for循环 * 退出后,我们可以进一步使用 count 值来确定我们应该使用 “is” 还是 “and”。
然后将 strings 值用作发送到 setSuccessMsg 方法的消息。
例如,打印 strings 值将产生类似的输出。