0
我在羅馬數字轉換功能中遇到了意想不到的結果。它會正確評估1,2或4位數字。它也將正確處理4位數字的第3位數字。如果這個數字是3位數,那麼它會評估這個百位的地方。羅馬數字開關機箱未正確評估
function convertToRoman(num) {
var evaluate = num.toString();
var replace = "";
var oneUnit;
var fiveUnit;
var tenUnit;
for (var i = 0; i < evaluate.length; i++)
{
switch (evaluate.length | i)
{
case 1|0:
case 2|1:
case 3|2:
case 4|3:
oneUnit = "I";
fiveUnit = "V";
tenUnit = "X";
break;
case 2|0:
case 3|1:
case 4|2:
oneUnit = "X";
fiveUnit = "L";
tenUnit = "C";
break;
case 3|0:
case 4|1:
oneUnit = "C";
fiveUnit = "D";
tenUnit = "M";
break;
case 4|0:
oneUnit = "M";
fiveUnit = "MMMMM";
tenUnit = "MMMMMMMMMM";
break;
}
switch (evaluate.charAt(i))
{
case "1":
replace += oneUnit;
break;
case "2":
replace += oneUnit + oneUnit;
break;
case "3":
replace += oneUnit + oneUnit + oneUnit;
break;
case "4":
replace += oneUnit + fiveUnit;
break;
case "5":
replace += fiveUnit;
break;
case "6":
replace += fiveUnit + oneUnit;
break;
case "7":
replace += fiveUnit + oneUnit + oneUnit;
break;
case "8":
replace += fiveUnit + oneUnit + oneUnit + oneUnit;
break;
case "9":
replace += oneUnit + tenUnit;
break;
}
}
num = replace;
return num;
}
555所需的返回: 「DLV」 返回爲555: 「VVV」
爲1555所需的返回: 「MDLV」 返回爲1555: 「MDLV」
爲什麼是一個3位數字的前兩位數字沒有被分配給正確的情況?
您似乎在語言語法方面存在一些問題。你是否知道你正在使用按位或運算符('|'),而不是邏輯或運算符('||')? – user1421750
我試圖讓案例需要像if語句中的「&&」這樣的兩個語句必須是真實的。我如何實現這一目標? –
switch語句只能根據它的大小寫值來計算一個表達式。您應該將開關塊轉換爲一系列if/else語句。 – user1421750