javascript - JS 数字转罗马数字脚本中出现 NaN 错误

标签 javascript nan

我正在编写一个将数字转换为罗马数字的脚本。由于某种原因,当我使用 2 位数字时,我返回的是 NaN,而不是我期望的结果。 2 位数字使用子字符串进行分割,目前没有转换为数字,但即使我使用 Number() 或 parseInt() 将字符串转换为数字,我也无法让 NaN 停止。我一定是做错了什么。请有人帮忙。代码可以在这里找到:

http://jsfiddle.net/q9Lkrjhu/

function answer(line){
    var roman;
    if(line.length == 1){
        singleDigit(line);
    }else if(line.length == 2){
        var firstDigit = line.substr(0,1);
        var secondDigit = line.substr(1,2);
        roman = twoDigit(firstDigit);
        roman += singleDigit(secondDigit);
    }else if(line.length == 3){

    }else if(line.length == 4){

}

function singleDigit(line){
     if(line == '4'){
        roman = 'IV';
    }else if(line == '9'){
        roman = 'IX';
    }else{
        if (line/5 >= 1){
            roman = 'V';
            var singles = ones(line - 5, 'I');
            roman += singles;
        }else{
            roman = ones(line, 'I');
        }
    }
}

function ones(num, char){
    var romOnes ='';
    for(var i=0; i<num;i++){
            romOnes += char;
    }
    return romOnes;
}

function twoDigit(line){
     if(line == '4'){
        roman = 'XL';
    }else if(line == '9'){
        roman = 'XC';
    }else{
        if (line/5 >= 1){
            roman = 'L';
            var singles = ones(line - 5, 'X');
            roman += singles;
        }else{
            roman = ones(line, 'X');
        }
    }
}

    alert(roman);
}
answer('42');

最佳答案

您的函数中需要return语句:

function singleDigit(line){
    var roman;
    if(line == '4'){
        roman = 'IV';
    }else if(line == '9'){
        roman = 'IX';
    }else{
        if (line/5 >= 1){
            roman = 'V';
            var singles = ones(line - 5, 'I');
            roman += singles;
        }else{
            roman = ones(line, 'I');
        }
    }
    return roman;
}

function twoDigit(line){
    var roman;
    if(line == '4'){
        roman = 'XL';
    }else if(line == '9'){
        roman = 'XC';
    }else{
        if (line/5 >= 1){
            roman = 'L';
            var singles = ones(line - 5, 'X');
            roman += singles;
        }else{
            roman = ones(line, 'X');
        }
    }
    return roman;
}

关于javascript - JS 数字转罗马数字脚本中出现 NaN 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26172795/

相关文章:

Python Pandas 根据多个其他列中的条件替换一列中的值

clojure - 是否期望 identity 返回与其参数不同的东西?

python - 检查 Sympy Expression 是否为 Nan?

null - Dygraph 应在图例中显示内插值

javascript - NPM 安装 jquery 出现错误?定义未定义?

javascript - 我可以使用循环在递增的元素 Id 上多次执行相同的函数调用吗?

javascript - websockets如何处理同一浏览器的两个选项卡

javascript - 用于单个事件的 Bootstrap Fullcalendar 模态

javascript - 为什么这个表格不起作用? JavaScript : number values in options from select input

javascript - 为什么我收到 NaN 错误?