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);
誰かが確認できれば、文字の代わりに数字を使用するようにケースを設定してみてください。switchステートメントはスイッチ( '===' vs '==')の厳密な比較を使用して、 if文、私はあなたの問題を解決するかもしれないと思います –
答えはかなり明白です。 switch文の文字列とif/elseの整数を比較しています。 – jdmdevdotnet
それだけです。ありがとう! –