2016-07-07 26 views
0

Ich habe ein einfaches, modulo-basiertes Skript, das für 3 und 6 Ziffern zu else läuft. Es gibt auch Fälle für diese Zahlen, deren Bedingung auch zu diesen Zahlen passen sollte.Einfacher Modulo-Tester

function caffeineBuzz(n){ 
    var returnvalue; 

    if (n % 3 == 0) 
     returnvalue = "Java"; 
    if (n % 3 == 0 && n % 4 == 0) 
     returnvalue = "Coffee"; 
    if (n % 3 == 0 && n % 2 == 0) 
     returnvalue = "Java" + "Script" 
    if (n % 4 == 0 && n % 2 == 0) 
     returnvalue = "Coffee" + "Script" 
    else 
     returnvalue = "mocha_missing!" 

    return returnvalue; 
} 

n steht für die Eingabe, daß eine ganze Zahl und Return sollte ein String sein.

Update: Am meisten spezifische -> weniger spezifische Ansatz half mir, aber es gibt Fälle, wenn es mit falschem Wert zurückkehrt.

function caffeineBuzz(n){ 
    var returnvalue; 

    if (n % 4 == 0) 
     returnvalue = "Coffee" + "Script" 
    else if (n % 3 == 0 && n % 4 == 0) 
     returnvalue = "Coffee"; 
    else if (n % 3 == 0 && n % 2 == 0) 
     returnvalue = "Java" + "Script" 
    else if (n % 3 == 0) 
     returnvalue = "Java"; 
    else 
     returnvalue = "mocha_missing!" 

    return returnvalue; 
} 
+0

Ákos, können Sie uns sagen, was ist die Frage, was möchten Sie erreichen und wie funktioniert diese Funktion? –

+0

* "' if (n% 4 == 0 && n% 2 == 0) '" * - Nicht, was Sie fragen, aber der zweite Teil dieser Bedingung ist redundant. – nnnnnn

+0

Sie verstehen, dass, wenn 'n% 3 == 0', es zu' returnValue = "java" 'geht und dann nie zu den anderen Teilen fortschreitet, richtig? So wirst du niemals die Teile 'Coffee' und' Java Script' erreichen. Wenn Sie möchten, dass das Skript sie erreichen kann, legen Sie sie zuerst an. Strukturieren Sie den Block "if/else" grundsätzlich von "am wenigsten" bis "am wenigsten spezifisch". (Beginnen Sie mit 'a && b && c && d 'bevor Sie zu weniger spezifischen Teilen wie' a && b' gehen und mit 'if a' enden) – Tularis

Antwort

1

Diese Funktion ist die Schätzung der Antwort basierend auf Kommentaren.

function caffeineBuzz(n){ 
    //Storing n's modulos to not calculate them multiple times 
    var mod3 = (n % 3 == 0) 
    var mod4 = (n % 4 == 0); 
    var mod2 = mod4 || (n % 2 == 0); 

    //Maybe: return (mod3 ? ("Java" + (mod4 ? "Coffee" : "")) + (mod2 ? "Script" : "") : "mocha_missing!"); 
    return (mod3 ? ((mod4 ? "Coffee" : "Java") + (mod2 ? "Script" : "")) : ("mocha_missing!")); 
}