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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乘鱼飞 中级黑马   /  2013-4-22 18:00  /  1129 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 乘鱼飞 于 2013-4-22 19:54 编辑
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;

  4. namespace Proj7_6
  5. {
  6.     public class Cal
  7.     {
  8.         protected double x;
  9.         protected double y;
  10.         public   double sum(double x, double y)
  11.         {
  12.             return x + y;
  13.         }
  14.         public double sub(double x, double y)
  15.         {
  16.             return Math.Abs(x - y);
  17.                
  18.         }
  19.     }
  20.     public class Cal2 : Cal
  21.     {
  22.         public double mix(double x, double y)
  23.         {
  24.             return x * y;
  25.         }
  26.         public double div(double x, double y)
  27.         {
  28.             return x / y;
  29.         }
  30.     }
  31.     class Program
  32.     {
  33.         static void Main(string[] args)
  34.         {
  35.             double i=(double )(Console.Read());
  36.             double j =( double )(Console.Read());
  37.             Cal p = new Cal();
  38.             Console.WriteLine("父类的加法         {0}",p.sum(i ,j ));
  39.             Console.WriteLine("父类的减法         {0}", p.sub(0.2, 1.2));

  40.             Cal2 pp = new Cal2();
  41.             Console.WriteLine("子类继承的加法     {0}", pp.sum(1.3, 1.4));
  42.             Console.WriteLine("子类继承的减法     {0}", pp.sub(2.5, 1.2));
  43.             Console.WriteLine("子类的乘法         {0}", pp.mix(1.2, 1.2));
  44.             Console.WriteLine("子类的除法         {0}", pp. div(3.6, 1.2));
  45.          

  46.         }
  47.     }
  48. }
复制代码
double i=(double )(Console.Read());
            double j =( double )(Console.Read());
            Cal p = new Cal();
            Console.WriteLine("父类的加法         {0}",p.sum(i ,j ));
为什么当我输入 0 0 做加法运算时 p.sum(i ,j )输出的是80

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

3 个回复

正序浏览
namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("输入第一个数:");
            double i =Convert .ToDouble ( Console.ReadLine());
           
            Console.WriteLine("输入第二个数:");
            double j = Convert.ToDouble(Console.ReadLine());
           
            cal p1 = new cal();
            Console.WriteLine("父类的加法   {0}",p1.sum(i,j));
            Console.ReadKey();
        }
    }
    public class cal
    {
        protected double x;
        protected double y;
        public double sum(double x, double y)
        {
            return x + y;
        }
    }
}
console.read()是从标准输入流中读取下一个字符,你输入00之后,程序把00看成一个,read()只接收第一个,而你按了回车之后,第二个read()接收的是其他的值,建议使用readline()函数,读取的是一行

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
两个问题:
1.Console.Read() 返回类型是int,而且返回的是这个字符的Ascii码。
2.Console.Read() 是读一个字符,你输入"0 0"实际上超过3个字符了。空格的Ascii码为32。
解决方法:
1.使用Console.ReadLine(); 返回类型是string,然后进行转换(推荐)
2.与'0'的Ascii码进行运算,(但如果用户输入的不是数字,会出现不可预料的后果)
参考:




评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
这个地方改下就ok了^^。

            Console.WriteLine("第一个数: ");  //加上这句话看上去舒服点^^。
            double i = double.Parse(Console.ReadLine()); //假定你输入都是数字 没有字母.
            Console.WriteLine("第二个数: ");
            double j = double.Parse(Console.ReadLine());

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马