String Concatentation

PGF*_*BUG -1 java

我有以下代码,回报令我困惑.我是java的新手,并不确定它为什么会以它的方式返回.任何帮助都会很棒.

当数据有PE846并且A846它返回时engine,amboengineambo.我只想回来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);
    }   
Run Code Online (Sandbox Code Playgroud)

Jon*_*uis 5

您可以尝试逐行遍历代码.如果它包含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"
} 
Run Code Online (Sandbox Code Playgroud)