2016-12-31 9 views
0

ノード内のプロンプトに負の数値が渡されるときはいつでもreverseEncryption関数を呼び出そうとしています。残念ながらconsole.logが表示されますが、reverseEncryptionは表示されません。たとえば、hello2というキーで暗号化すると、結果はuqiimになります。場合は、再びアプリケーションを通過する場合は-2uqiimの鍵を復号化すると私はreverseEncryption関数を呼び出すとhelloを生成します。ノードアプリケーション内にあるときに関数が呼び出されない

//Caesar cipher in node 
var inquirer = require("inquirer"); 

inquirer.prompt([ 
    { 
    type: "input", 
    name: "message", 
    message: "Write the message you would like to encrypt:" 
    }, 
    { 
    type: "input", 
    name: "key", 
    message: "Enter a number between 0 and 25" 
    } 
]).then(function(encrypted) { 

    var newMessage = ''; 

    if (encrypted.key < 0) { 
    console.log("cypher key is negative"); 
    reverseEncryption(); 
    } else { 
    console.log("cypher key is " + encrypted.key) 

    for (var i = 0; i < encrypted.message.length; i++) { 
     var newKey = encrypted.message[i]; 

     //if (newKey.match(/[a-z]/i)){ 
     var newCode = encrypted.message.charCodeAt(i); 

     if ((newCode >= 65) && (newCode <= 90)) { 
     newKey = String.fromCharCode(((newCode - 65 + encrypted.key) % 26) + 65); 
     } else if ((newCode >= 97) && (newCode <= 122)) { 
     newKey = String.fromCharCode(((newCode - 97 + encrypted.key) % 26) + 97); 
     } 
     //} 
     newMessage += newKey; 
    } 
    } 
    console.log(newMessage); 
}); 



var reverseEncryption = function() { 
    var reverseMessage = ""; 

    for (var i = 0; i < encrypted.message.length; i++) { 
    var reverseKey = encrypted.message[i]; 

    //if (newKey.match(/[a-z]/i)){ 
    var reverseCode = encrypted.message.charCodeAt(i); 

    if ((reverseCode >= 65) && (reverseCode <= 90)) { 
     reverseKey = String.fromCharCode(((reverseCode - 65 + (encrypted.key + 26)) % 26) + 65); 
    } else if ((reverseCode >= 97) && (reverseCode <= 122)) { 
     reverseKey = String.fromCharCode(((reverseCode - 97 + (encrypted.key + 26)) % 26) + 97); 
    } 
    reverseMessage += reverseKey; 
    } 
    console.log(reverseMessage); 
}; 

答えて

0

あなたの問題は、あなたがreverseEncryptionに格納あなたの関数へencryptedを渡さないということです。その機能の中でencrypted、そのためにあなたのスクリプトは失敗します。

プロミスを使用する場合は、チェーンの最後にcatchを使用してエラーがあるかどうかを確認する必要があります。

inquirer.prompt([ 
    { 
    type: "input", 
    name: "message", 
    message: "Write the message you would like to encrypt:" 
    }, 
    { 
    type: "input", 
    name: "key", 
    message: "Enter a number between 0 and 25" 
    } 
]).then(function(encrypted) { 
    // the res of you code 
}) 
.catch(function(err) { 
    console.error(err); 
}); 

この.catchコールバックが報告されています:[ReferenceError: encrypted is not defined]

をこの問題を解決するには、あなたがreverseEncryption(encrypted);を使用して慰めを呼び出す必要がありますし、機能自体は、パラメータfunction (encrypted) { }

を持っている必要があります
関連する問題