Java 弦凹
我有下面的代码,返回的代码让我很困惑。我是java新手,不太清楚它为什么会恢复原样。任何帮助都会很好 当数据具有Java 弦凹,java,Java,我有下面的代码,返回的代码让我很困惑。我是java新手,不太清楚它为什么会恢复原样。任何帮助都会很好 当数据具有PE846和A846时,它返回engine、ambo和engineambo。我只想返回engineambo String soundString = ""; if (data.contains("PE846")) { soundString += "engine"; betaString = "Engine : "; s
PE846
和A846
时,它返回engine
、ambo
和engineambo
。我只想返回engineambo
String soundString = "";
if (data.contains("PE846")) {
soundString += "engine";
betaString = "Engine : ";
sign = engine;
}
if (data.contains("A846")) {
soundString += "ambo";
betaString += "Ambo : ";
sign = ambo;
}
if (data.contains("MD846")) {
soundString += "medic";
betaString += "Medic";
sign = medic;
}
log.info(betaString + " Alerted");
{
new AudioPlayer("sounds/" + soundString + ".wav").start();
log.info(soundString);
}
如果您的数据包含PE846-A846,那么它只包含PE、A和PE&&A。您应该首先在一个If语句中检查PE&&A,如果失败,则分别检查它们。您可以尝试逐行跟踪代码。如果它包含PE846和A846(但不是MD846),则它将运行前两个条件块,从而执行如下操作:
if (data.contains("PE846")){ // The string does contain PE846, per your question
soundString += "engine"; // soundString = "" + "engine" = "engine"
betaString = "Engine : "; // betaString = "Engine : "
sign = engine; // sign = engine
}
if (data.contains("A846")){ // The string does contain A846, per your question
soundString += "ambo"; // soundString = "engine" + "ambo"
betaString += "Ambo : "; // betaString = "Engine : " + "Ambo : " = "Engine : Ambo : "
sign = ambo; // sign = ambo (overwriting the previous value, "engine")
}
if (data.contains("MD846")){ // The string does not contain MD846, per your question
soundString += "medic"; // not executed
betaString += "Medic"; // not executed
sign = medic; // not executed
}
log.info(betaString + " Alerted"); // betaString + " Alerted" => "Engine : Ambo : Alerted"
{
new AudioPlayer("sounds/"+ soundString +".wav").start();
log.info(soundString); // soundString => "engineambo"
}
尝试重写代码,使其不包含经常被重新分配的变量。
final
关键字将阻止变量的第二次赋值,这样就不需要检查整个程序流程,以查看以前的赋值是否对以后的赋值有影响。此外,避免使用+=
,除非您确实想向现有数据添加数据
此外,如果您将某个值设置为“正确值”,如果其他值不可能,则不要继续更改它
差不多
String mystring;
if (data.contains("MD846")) {
mystring = "medic";
} else if (data.contains("A846")) {
mystring = "ambo";
}
无法仅因为数据被设置为“MD846A846”而将mystring设置为“medicambo”。方法
包含的
不适合查找子字符串,因为它使用CharSequence
对象,而不是字符串
对象
在这种情况下,最好的选择是替换类字符串中
indexOf
的contains
方法。您的代码示例甚至不包括返回值。您指的是soundString的内容?返回3个元素是什么意思?一个方法不能返回多个。请解释一下。我想他指的是带有“returns”的日志输出。我们还需要知道其他代码吗?您是否可以包括完整的函数,特别是返回字符串的位。。。