黑马程序员技术交流社区

标题: 一个简单的程序 [打印本页]

作者: 乘鱼飞    时间: 2013-4-22 18:00
标题: 一个简单的程序
本帖最后由 乘鱼飞 于 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
作者: 覃庆健    时间: 2013-4-22 18:31
这个地方改下就ok了^^。

            Console.WriteLine("第一个数: ");  //加上这句话看上去舒服点^^。
            double i = double.Parse(Console.ReadLine()); //假定你输入都是数字 没有字母.
            Console.WriteLine("第二个数: ");
            double j = double.Parse(Console.ReadLine());
作者: 崔宏奎    时间: 2013-4-22 18:34
两个问题:
1.Console.Read() 返回类型是int,而且返回的是这个字符的Ascii码。
2.Console.Read() 是读一个字符,你输入"0 0"实际上超过3个字符了。空格的Ascii码为32。
解决方法:
1.使用Console.ReadLine(); 返回类型是string,然后进行转换(推荐)
2.与'0'的Ascii码进行运算,(但如果用户输入的不是数字,会出现不可预料的后果)
参考:





作者: 风雪再现    时间: 2013-4-22 18:46
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()函数,读取的是一行




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2