2017-03-13 6 views
0

数字をローマ数字に変換する短いプログラムを書いた。これには2つの非常によく似たswitch文が含まれています。そのうち1つは完全にうまくいっていますが、もう1つは(スニペットでコメントアウトされています)、そうではありません。コンソールは「エラー」メッセージを記録し、機能のパラメータ「e」がスイッチに何らかの形で到達していないことを示します。
しかし、私はスイッチの代わりに "if"を使用したときに動作します。そこには何が起こっているの?同一のIF文が(Java Script)のときにSWITCH文が動作しない

ありがとうございます。あなたは、本質的に何をしている、あなたはDとEのためのnumためcharに渡しているので、コメントswitch文は、文字、数字を使用する必要はありませんでしょうconvert呼ぶのです

// d - digit being converted 
 
// e - digit's place in the number (sorry, don't know the right term in English) 
 

 
function convertToRoman(num) { 
 
\t 
 
\t var convert = function(d, e){ 
 
\t \t 
 
\t \t var a = ''; 
 
\t \t var b = ''; 
 
\t \t var c = ''; 
 
\t \t 
 
\t \t /* 
 
\t \t switch (e){ 
 
\t \t \t case '1': a='I'; b='V'; c='X'; \t break; 
 
\t \t \t case '2': a='X'; b='L'; c='C'; \t break; 
 
\t \t \t case '3': a='C'; b='D'; c='M'; \t break; 
 
\t \t \t case '4': a='M';    break; 
 
\t \t \t default: console.log('error')} 
 
\t \t */ 
 
\t \t 
 
\t \t if \t (e===1) {a='I'; b='V'; c='X';} 
 
\t \t else if (e===2) {a='X'; b='L'; c='C';} 
 
\t \t else if (e===3) {a='C'; b='D'; c='M';} 
 
\t \t else if (e===4) {a='M';} 
 
\t \t else \t \t {console.log('error')} 
 
\t \t \t 
 
\t \t var s=''; 
 
\t \t switch (d){ 
 
\t \t \t case '0': s = ''; \t \t break; 
 
\t \t \t case '1': s = a; \t \t break; 
 
\t \t \t case '2': s = a+a; \t \t break; 
 
\t \t \t case '3': s = a+a+a;  break; 
 
\t \t \t case '4': s = a+b; \t \t break; 
 
\t \t \t case '5': s = b; \t \t break; 
 
\t \t \t case '6': s = b+a; \t \t break; 
 
\t \t \t case '7': s = b+a+a;  break; 
 
\t \t \t case '8': s = b+a+a+a;  break; 
 
\t \t \t case '9': s = a+c; \t \t break; 
 
\t \t \t default: s = '#'; \t \t break; \t } 
 
\t \t return s; 
 
\t }; 
 

 
\t arr = String(num).split(""); 
 

 
\t for (i=arr.length-1; i>=0; i--){ 
 
\t \t var e = arr.length-i; 
 
\t \t arr[i] = convert(arr[i], e); 
 
\t } 
 
    
 
    return arr.join(''); 
 
} 
 
convertToRoman(501);

+0

誰かが確認できれば、文字の代わりに数字を使用するようにケースを設定してみてください。switchステートメントはスイッチ( '===' vs '==')の厳密な比較を使用して、 if文、私はあなたの問題を解決するかもしれないと思います –

+0

答えはかなり明白です。 switch文の文字列とif/elseの整数を比較しています。 – jdmdevdotnet

+0

それだけです。ありがとう! –

答えて

1

あなたはif、else if、else replacementを使っています。