A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 朱传波 中级黑马   /  2013-2-24 11:35  /  2129 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

让用户输入他的语文和数学成绩,计算他的总成绩并显示出来。

   这是老师课上讲的一个经典题目,包括基础测试题目里面也有,按照老师的思路,我也写出了这个小题目的代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace text4
{//让用户输入他的语文和数学成绩,计算他的总成绩并显示出来。
    class Program
    {
        static void Main(string[] args)
        {
            //定义两个个字符串获取用户的语文和数学成绩
            Console.WriteLine("请输入语文成绩");
            string chinese = Console.ReadLine();
            Console.WriteLine("请输入数学成绩");
            string math = Console.ReadLine();
            //将用户的两项成绩分别强转为int类型,以便于运算
            int ch = Convert.ToInt32(chinese);
            int ma = Convert.ToInt32(math);
            int sum = ch + ma;
            Console.WriteLine("您的总成绩为{0}",sum);
            Console.ReadKey();


以上的意思是先定义两个字符串获取用户的两项成绩,然后强制转换为int类型并计算。这种情况只考虑到了分值为整数时的计算,而一般情况下,分值不一定是整数,这时运算出错。所以个人认为将获取到的string类型强转为double类型比较合理。如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        { //定义两个个字符串获取用户的语文和数学成绩
            Console.WriteLine("请输入语文成绩");
            string chinese = Console.ReadLine();
            Console.WriteLine("请输入数学成绩");
            string math = Console.ReadLine();
            //将用户的两项成绩分别强转为idouble类型,以便于运算
            double ch = Convert.ToDouble(chinese);
            double ma = Convert.ToDouble(math);
            double sum = ch + ma;
            Console.WriteLine("您的总成绩为{0}", sum);
            Console.ReadKey();
        }
    }
}

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

7 个回复

倒序浏览
可以做这样的修改,谨慎是好的,不过既然没有说明的话,一般还是做整数处理...
  //定义两个个字符串获取用户的语文和数学成绩
            Console.WriteLine("请输入语文成绩");
            int ch = Convert.ToInt32(Console.ReadLine()); //这样更好吧
            Console.WriteLine("请输入数学成绩");
             int ma = Convert.ToInt32(Console.ReadLine());
            int sum = ch + ma;
            Console.WriteLine("您的总成绩为{0}",sum);
            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
如果要谨慎我觉得还是用double.TryParse();   这个方法有两个参数,一个是待转换的字符串,另一个是参数如果转换成功将转换后的值存到第二个参数里,第二个人参数是由out修饰发到参数,方法的返回值是bool类型,判断一下用户输入是否能转换为int类型或其他的数值类型,这样或许更严谨

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
{:soso_e138:}其实你可也可以这样
   try
            {
                //定义两个个字符串获取用户的语文和数学成绩
                Console.WriteLine("请输入语文成绩");
                string chinese = Console.ReadLine();
                Console.WriteLine("请输入数学成绩");
                string math = Console.ReadLine();
                //将用户的两项成绩分别强转为int类型,以便于运算
                int ch = Convert.ToInt32(chinese);
                int ma = Convert.ToInt32(math);
                int sum = ch + ma;
                Console.WriteLine("您的总成绩为{0}", sum);
                Console.ReadKey();
            }
            catch {
                Console.WriteLine("请输入整数!");
                Console.ReadKey();
            }

相当偷懒的写法。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
xiaoxiang_04 发表于 2013-2-24 17:21
其实你可也可以这样
   try
            {

精简一点来说是这样的
  1. try
  2.             {
  3.                 //定义两个个字符串获取用户的语文和数学成绩
  4.                 Console.WriteLine("请输入语文成绩");
  5.                 string chinese = Console.ReadLine();
  6.                 Console.WriteLine("请输入数学成绩");
  7.                 string math = Console.ReadLine();
  8.                 //将用户的两项成绩分别强转为int类型,以便于运算
  9.                 int ch = Convert.ToInt32(chinese);
  10.                 int ma = Convert.ToInt32(math);
  11.                 int sum = ch + ma;
  12.                 Console.WriteLine("您的总成绩为{0}", sum);
  13.                
  14.             }
  15.             catch {
  16.                 Console.WriteLine("请输入整数!");
  17.                
  18.             }
  19. Console.ReadKey();//将这句拿到外面来比较好。代码更精简
复制代码
回复 使用道具 举报
c
#```````````
回复 使用道具 举报
只是一道题  没必要做成double的   如果是现实中   你见过 0.3 的结果吗   不还都是整数
回复 使用道具 举报
如果想更严谨的话,输入的时候就判断吧。不过成绩是可以有小数的,例如80.5分。所以用int是不完整的。还有,如果输入的不是阿拉伯数字,那么久要验证,如果不通过则重新输入。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马