菜鸟一枚,求教C#程序小问题

kn1011 发布于 2013/08/22 09:24
阅读 227
收藏 0
菜鸟一枚,写个程序不知道错在哪儿,求指教 实现功能: 输入生日缩写,统计并输出不同年份,不同月份的人数与概率 如输入31201表示93年12月1日,默认总人数为70 运行if (tem !=null) birth[i] = Convert.ToInt32(tem)语句时出错,不知道怎么修改请大家看看,帮忙找找问题,三克油very much! using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Tongxunlu_tongji { class Program { static void Main(string[] args) { for (; ; ) { int[] birth; string tem; birth = new int[70]; birth = null; Console.WriteLine("请输入生日缩写:"); for (int i = 0; i < 70; i++) { tem = Console.ReadLine(); if (tem !=null) birth[i] = Convert.ToInt32(tem); else break; } _year(birth); _month(birth); } } static void _year(int[] m) { int _90, _91, _92, _93, _94, _95, num; _90 = _91 = _92 = _93 = _94 = _95 = num = 0; for (int i = 0; i < 70; i++) { if (m[i] != 0) switch (m[i] / 1000) { case (0): _90++; break; case (1): _91++; break; case (2): _92++; break; case (3): _93++; break; case (4): _94++; break; case (5): _95++; break; default: break; } else { num = i; break; } } Console.WriteLine("90,91,92,93,94,95,96年的人数为:" + _90 + " " + " " + _91 + " " + _92 + " " + _93 + " " + _94 + " " + _95); Console.WriteLine("概率为 :" + _90 / num + " " + " " + _91 / num + " " + _92 / num + " " + _93 / num + " " + _94 / num + " " + _95 / num); } static void _month(int[] m) { int _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, num; _1 = _2 = _3 = _4 = _5 = _6 = _7 = _8 = _9 = _10 = _11 = _12 = num = 0; for (int i = 0; i < 70; i++) { if (m[i] != 0) switch ((m[i] % 1000) / 100) { case (1): _1++; break; case (2): _2++; break; case (3): _3++; break; case (4): _4++; break; case (5): _5++; break; case (6): _6++; break; case (7): _7++; break; case (8): _8++; break; case (9): _9++; break; case (10): _10++; break; case (11): _11++; break; case (12): _12++; break; default: break; } else { num = i; break; } } Console.WriteLine("各月份人数为:+{1}+{2}+{3}+{4}+{5}+{6}+{7}+{8}+{9}+{10}+{11}+{12}",_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12); Console.WriteLine("各月份比例为:+{1}+{2}+{3}+{4}+{5}+{6}+{7}+{8}+{9}+{10}+{11}+{12}", _1 / num, _2 / num, _3 / num, _4 / num, _5 / num, _6 / num, _7 / num, _8 / num, _9 / num, _10 / num, _11 / num, _12 / num); } } }
加载中
1
ling0
ling0

程序有三个错误。

birth = new int[70]; 后面 的 birth = null; 不能赋为空。

birth[i] = Convert.ToInt32(tem); 之前的 if 里判断条件应该 用if (!string.IsNullOrEmpty(tem))

Console.WriteLine("各月份人数为:...") {}中的下标应该从0 开始。

0
工程师爸爸
工程师爸爸
 啊~~哧!已自宫!
0
iiiiiiiii
iiiiiiiii
负分滚粗 !!!
0
王涛
王涛
这排版,略碉,略碉
0
0
hanjieson
hanjieson
这代码只有你自己能看下去。
0
不是胖子
不是胖子
有人能回答出来,我请喝可乐
不是胖子
不是胖子
回复 @arrowing : 好的,郑州高新区863,说道做到,只限工作日,提前给我发邮件 bery@live.cn
Arrowing
Arrowing
快请下面2位喝可乐 :) 哈哈
0
小耶果
小耶果

随便改一下(三处错误),但逻辑是否正确我就不保证了,但至少运行没有throw exception

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tongxunlu_tongji
{
    class Program
    {
        static void Main(string[] args)
        {
            for(;;)
            {
                int[] birth;
                string tem;
                birth = new int[70];
                //birth = null;
                Console.WriteLine("请输入生日缩写:");
                for(int i = 0;i < 70;i++)
                {
                    tem = Console.ReadLine();
                    if(!string.IsNullOrWhiteSpace(tem))
                        birth[i] = Convert.ToInt32(tem);//最好要容错
                    else 
                        break;
                }
                _year(birth); _month(birth);
            }
        }


        static void _year(int[] m)
        {
            int _90, _91, _92, _93, _94, _95, num;
            _90 = _91 = _92 = _93 = _94 = _95 = num = 0;
            for(int i = 0;i < 70;i++)
            {
                if(m[i] != 0)
                    switch(m[i] / 1000)
                    {
                        case (0): _90++; break;
                        case (1): _91++; break;
                        case (2): _92++; break;
                        case (3): _93++; break;
                        case (4): _94++; break;
                        case (5): _95++; break;
                        default: break;
                    }
                else { num = i; break; }
            }
            Console.WriteLine("90,91,92,93,94,95,96年的人数为:" + _90 + " " + " " + _91 + " " + _92 + " " + _93 + " " + _94 + " " + _95);
             Console.WriteLine("概率为 :" + _90 / num + " " + " " + _91 / num + " " + _92 / num + " " + _93 / num + " " + _94 / num + " " + _95 / num);
        }


        static void _month(int[] m)
        {
            int _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, num;
            _1 = _2 = _3 = _4 = _5 = _6 = _7 = _8 = _9 = _10 = _11 = _12 = num = 0;
            for(int i = 0;i < 70;i++)
            {
                if(m[i] != 0)
                    switch((m[i] % 1000) / 100)
                    {
                        case (1): _1++; break;
                        case (2): _2++; break;
                        case (3): _3++; break;
                        case (4): _4++; break;
                        case (5): _5++; break;
                        case (6): _6++; break;
                        case (7): _7++; break;
                        case (8): _8++; break;
                        case (9): _9++; break;
                        case (10): _10++; break;
                        case (11): _11++; break;
                        case (12): _12++; break;
                        default: break;
                    }
                else { num = i; break; }
            }
            Console.WriteLine("各月份人数为:+{0}+{1}+{2}+{3}+{4}+{5}+{6}+{7}+{8}+{9}+{10}+{11}", _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12);
            Console.WriteLine("各月份比例为:+{0}+{1}+{2}+{3}+{4}+{5}+{6}+{7}+{8}+{9}+{10}+{11}", _1 / num, _2 / num, _3 / num, _4 / num, _5 / num, _6 / num, _7 / num, _8 / num, _9 / num, _10 / num, _11 / num, _12 / num);
        }
    }
}
0
张连达
张连达
看到这种代码排版,反正我是没有要回答的欲望了
返回顶部
顶部