老师,我想请问一下我这个作业哪里出错了?为什么最后输出的结果是NaN

老师,我想请问一下我这个作业哪里出错了?为什么最后输出的结果是NaN

<!DOCTYPE html>

<html>

<head>

<title>作业题</title>

<meta charset="utf-8">

<script>

function a(){

var x=(prompt('请输入您的出生年份'));

if(isNaN(x)){

alert('请输入数字');

}else if(x.length!=4){

    alert('请输入四位数字');  

}else{

var y=parseInt(prompt('请输出您的出生月份'));

var m1,m3,m5,m7,m8,m10,m12=31;  //每个月份的天数

var m4,m6,m9,m11=30;          //每个月份的天数   

if(x%4==0){

var m2=29;     

}else{

var m2=28;

}

        switch(y){

        case 1:

        var sum1=0;//月份天数的总和

        break;

        case 2:

        var sum1=m1;

        break;

        case 3:

        var sum1=m1+m2;

        break;

        case 4:

        var sum1=m1+m2+m3;

        break;

        case 5:

        var sum1=m1+m2+m3+m4;

        break;

        case 6:

        var sum1=m1+m2+m3+m4+m5;

        break;

        case 7:

        var sum1=m1+m2+m3+m4+m5+m6;

        break;

        case 8:

        var sum1=m1+m2+m3+m4+m5+m6+m7;

        break;

        case 9:

        var sum1=m1+m2+m3+m4+m5+m6+m7+m8;

        break;

        case 10:

        var sum1=m1+m2+m3+m4+m5+m6+m7+m8+m9;

        break;

        case 11:

        var sum1=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10;

        break;

        default:

        var sum1=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10+m11;

        }

        var z=parseInt(prompt('请输出您的出生日期'));

        sum2=z;                  

}

var sum=sum1+sum2;            //出生的天数总和

var n=parseInt(x);

document.write('您的生日在'+n+'年是第'+sum+'天');

}

a();


</script>

</head>

<body>


</body>

</html>


正在回答

登陆购买课程后可参与讨论,去登陆

4回答

老师修改的代码是没有问题的,可以粘贴测试下:

<!DOCTYPE html>
<html>

<head>
    <title>hello</title>
    <meta charset="utf-8">
    <script type="text/javascript">
    function a() {

        var x = (prompt('请输入您的出生年份'));

        if (isNaN(x)) {

            alert('请输入数字');

        } else if (x.length != 4) {

            alert('请输入四位数字');

        } else {

            var y = parseInt(prompt('请输出您的出生月份'));

            var m1 = 31,
                m3 = 31,
                m5 = 31,
                m7 = 31,
                m8 = 31,
                m10 = 31,
                m12 = 31; //每个月份的天数

            var m4 = 30,
                m6 = 30,
                m9 = 30,
                m11 = 30; //每个月份的天数  



            if (x % 4 == 0 && x % 100 !== 0 || x % 400 == 0) {

                var m2 = 29;

            } else {

                var m2 = 28;

            }

            switch (y) {

                case 1:

                    var sum1 = 0; //月份天数的总和

                    break;

                case 2:

                    var sum1 = m1;

                    break;

                case 3:

                    var sum1 = m1 + m2;

                    break;

                case 4:

                    var sum1 = m1 + m2 + m3;

                    break;

                case 5:

                    var sum1 = m1 + m2 + m3 + m4;

                    break;

                case 6:

                    var sum1 = m1 + m2 + m3 + m4 + m5;

                    break;

                case 7:

                    var sum1 = m1 + m2 + m3 + m4 + m5 + m6;

                    break;

                case 8:

                    var sum1 = m1 + m2 + m3 + m4 + m5 + m6 + m7;

                    break;

                case 9:

                    var sum1 = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8;

                    break;

                case 10:

                    var sum1 = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9;

                    break;

                case 11:

                    var sum1 = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10;

                    break;

                default:

                    var sum1 = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11;

            }

            var z = parseInt(prompt('请输出您的出生日期'));

            sum2 = z;

        }

        var sum = sum1 + sum2; //出生的天数总和

        var n = parseInt(x);

        document.write('您的生日在' + n + '年是第' + sum + '天');

    }

    a();
    </script>
</head>

<body>
</body>

</html>

自己再试试。

好帮手慕星星 2019-01-21 10:02:57

代码中的问题:

1、闰年条件的关系不对:

http://img1.sycdn.imooc.com//climg/5c452738000115ed08030301.jpg

2、switch条件不对,()中不能是比较的关系,直接一个变量就可以:

http://img1.sycdn.imooc.com//climg/5c45284a0001ae9707090287.jpg

自己再测试下。

  • 提问者 张艳华zzz #1
    是不是我写的逻辑有其他错误啊,按照你说的方法改了老师,还是一样,判断出来的天数还是明显不对的
    2019-01-21 22:13:11
  • 提问者 张艳华zzz #2
    老师我这样写理论上是能实现的是吧,就是现在不知道问题出在哪里了
    2019-01-22 00:32:59
提问者 张艳华zzz 2019-01-20 14:06:36

<!DOCTYPE html>

<html>

<head>

<title>hello</title>

<meta charset="utf-8">

<script type="text/javascript">

function a(){

var x=(prompt('请输入您的出生年份'));

if(isNaN(x)){

alert('请输入数字');

}else if(x.length!=4){

    alert('请输入四位数字');  

}else{

var y=parseInt(prompt('请输出您的出生月份'));

var m1=31,m3=31,m5=31,m7=31,m8=31,m10=31,m12=31;  //每个月份的天数

var m4=30,m6=30,m9=30,m11=30;          //每个月份的天数  

 

if(x%4==0 || x%100!==0 || x%400==0){

var m2=29;     

}else{

var m2=28;

}

        switch(y>=1 && y<=12){

        case 1:

        var sum1=0;//月份天数的总和

        break;

        case 2:

        var sum1=m1;

        break;

        case 3:

        var sum1=m1+m2;

        break;

        case 4:

        var sum1=m1+m2+m3;

        break;

        case 5:

        var sum1=m1+m2+m3+m4;

        break;

        case 6:

        var sum1=m1+m2+m3+m4+m5;

        break;

        case 7:

        var sum1=m1+m2+m3+m4+m5+m6;

        break;

        case 8:

        var sum1=m1+m2+m3+m4+m5+m6+m7;

        break;

        case 9:

        var sum1=m1+m2+m3+m4+m5+m6+m7+m8;

        break;

        case 10:

        var sum1=m1+m2+m3+m4+m5+m6+m7+m8+m9;

        break;

        case 11:

        var sum1=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10;

        break;

        default:

        var sum1=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10+m11;

        }

        var z=parseInt(prompt('请输出您的出生日期'));

        sum2=z;                  

}

var sum=sum1+sum2;            //出生的天数总和

var n=parseInt(x);

document.write('您的生日在'+n+'年是第'+sum+'天');

}

a();

</script>

</head>

<body>


</body>

</html>


好帮手慕星星 2019-01-18 18:52:43

你好,代码中的问题:

1、给变量赋值不对,每一个变量声明之后都需要赋值,否则为undefined。

http://img1.sycdn.imooc.com//climg/5c41afa90001e8f607420366.jpg

2、闰年的判断条件不完整,是否为闰年有两个条件:

(1)能被4整除,不能被100整除

(2)能被400整除

http://img1.sycdn.imooc.com//climg/5c41afed0001e05008930342.jpg

可以参考上面建议修改下,祝学习愉快!

  • 提问者 张艳华zzz #1
    老师,我按照您的说法修改我的错误地方之后,计算出来的第几天数字很明显不对,无论输入多少,都是300多天,请问我的代码还有其他什么地方是错误的啊?
    2019-01-18 19:25:00
  • 好帮手慕星星 回复 提问者 张艳华zzz #2
    建议将你修改之后的代码粘贴上来,老师帮助你调试下。
    2019-01-20 08:48:52
  • 提问者 张艳华zzz 回复 好帮手慕星星 #3
    我粘贴上来了老师,麻烦您帮忙看一下
    2019-01-20 14:07:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师