//面向过程计算器
//思路: 需要注意的是: 两个数相除 除数不能为0;
//1、提示用户输入
//2、进行运算
//3、得到结果
Console.WriteLine("请输入第一个数字: ");
double firstNumber = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入第二个数字: ");
double secondNumber = Convert.ToDouble(Console.ReadLine());
//提示输入运算符
string oper = Console.ReadLine();

//声明一个用于存储结果的变量
//double sum = 0;
//可空类型
double? sum = null;

//异常的处理: 除数不能为零
try
{
//用switch case进行多条件的定值的判断
switch (oper)
{
case "+": sum = firstNumber + secondNumber;
break;
case "-": sum = firstNumber - secondNumber;
break;
case "*": sum = firstNumber * secondNumber;
break;
case "/": sum = firstNumber / secondNumber;
if (secondNumber == 0)
{
throw new Exception("除数不能为 0");
}
break;
default:
Console.WriteLine("您输入的不是一个数字,请按任意键结束...");
Console.ReadKey();
return; //结束
}
if (sum != null)
//输出结果
Console.WriteLine("{0}{1}{2} = {3}", firstNumber, oper, secondNumber, sum);
}
catch(Exception ex)
{
Console.WriteLine(ex.Message); //上面的异常写的是什么,此地方的Message的内容就是什么
}
Console.ReadKey();

///////////////////////////////////////////////////////////

改成用方法的方式

static void Main(string[] args)
{
//输入数字
double firstNumber = ReadDouble();
double secondNumber = ReadDouble();

Console.WriteLine("请输入运算符: ");
string oper = Console.ReadLine();

//开始计算
//要异常进行处理: 除数不能为0,运算符的符号不正确
try
{
double dResult = Calculation(firstNumber, secondNumber, oper);
Console.WriteLine("{0} {1} {2} = {3}", firstNumber, oper, secondNumber, dResult);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}

Console.ReadKey();
}

/// <summary>
/// 判断输入的内容
/// </summary>
/// <returns></returns>
public static double ReadDouble()
{
double dNmber;

while (true)
{
Console.WriteLine("请输入第一个数字: ");
string input = Console.ReadLine();

//把用户输入的内容转城字符串
if (double.TryParse(input, out dNmber))
{
break;
}
else
{
Console.WriteLine("对不起, 您输入的不是一个数字,请重新输入...");
}
}
return dNmber;
}

/// <summary>
/// 计算的方法
/// </summary>
/// <param name="firstNumber"></param>
/// <param name="secondNumber"></param>
/// <param name="oper"></param>
/// <returns></returns>
public static double Calculation(double firstNumber, double secondNumber, string oper)
{
double sum;
//用switch case进行多条件的定值的判断
switch (oper)
{
case "+": sum = firstNumber + secondNumber;
break;
case "-": sum = firstNumber - secondNumber;
break;
case "*": sum = firstNumber * secondNumber;
break;
case "/":
//在代码运行的过程中,实际条件与预期条件可能不一致的时候,可以抛个异常
if (secondNumber == 0)
{
throw new Exception("除数不能为 0");
}
sum = firstNumber / secondNumber;
break;
default:
throw new Exception("请输入正确的运算符...");
}
return sum;
}

C#基础--面向过程计算器的更多相关文章

  1. python基础——面向过程的编程思想及举例

    面向过程的编程思想 1.面向过程的编程思想及举例 写程序时: 要先想功能,分步实现 2. os模块中walk输出目录中文件路径 os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上 ...

  2. python基础-面向过程编程

    面向过程编程 面向过程编程其实是一种机械式的思维方式,其核心就是"过程". 过程指的是一种解决问题的步骤,即先干什么再干什么,最后干什么. 优点:将复杂的问题流程化,进而简单化. ...

  3. 四、java基础-面向过程_对象_类中可出现的因素

    1.面向过程和面向对象区别: 1)面向过程:开发一个应用程序.一个项目,必须先了解整个过程,了解各个步骤.模块间的因果关系,使的面向过程方式去开发程序时,代码和代码之间的关联程度是非常强.所以其中任何 ...

  4. 【java基础】面向过程~面向对象

    相信大家都知道这两个东西,可是大家是如何知道的呢?我们又该如何区分这个东西到底是面向过程还是面向对象的呢? 那,我们首先就要知道什么是面向过程,什么是面向对象: 面向过程"(Procedur ...

  5. Java基础知识强化20:面向对象和面向过程的思想对比

    面向对象与面向过程的区别  1. 与面向对象编程思想相比较的,往往是面向过程的编程思想,其实在我来理解,两者并不冲突,原因是面向对象的编程也必须使用面向过程的思维来实现具体的功能,所以我认为,两者的区 ...

  6. C++基础——C面向过程与C++面向对象编程01_圆面积求解

    #include "iostream";//包含C++的头文件using namespace std;//使用命名空间std标准的命名空间(在这个命名空间中定义了很多标准定义)vo ...

  7. python基础知识14---迭代器、生成器、面向过程编程

    阅读目录 一 迭代器 二 生成器 三 面向过程编程 一 迭代器 1 迭代的概念 #迭代器即迭代的工具,那什么是迭代呢? #迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初 ...

  8. Python基础之面向过程编程

    要求:在文件里递归找到关于包含“Python”内容的文件的绝对路径并打印出来 #定义阶段 import os,time def init(func): #装饰器的作用是使下面的生成器初始化,yield ...

  9. python基础----迭代器、生成器、协程函数及应用(面向过程实例)

    一.什么是迭代器协议 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 2.可迭代 ...

随机推荐

  1. 网页上记录鼠标的点击次数和一段有用的php代码,自己学习使用

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. redis订阅发布

    一.简介 Pub/Sub 从字面上理解就是发布(Publish)与订阅(Subscribe),在Redis中,你可以设定对某一个key值进行消息发布及消息订阅,当一个key值上进行了消息发布后,所有订 ...

  3. Tomcat卸载

    1.以管理员身份打开cmd,执行以下命令: C:Windows\system32>cd C:\Program Files\apache-tomcat-7.0.69\bin C:\Program ...

  4. 手机页面head中的meta元素

    <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="ex ...

  5. androidStudio中如何加载字体资源?

    在android中字体的格式总是不能尽善尽美的显示出来 ,  于是要求我们使用一些有美感的字体,加载的方式(就像HTML的字体一样),我们需要通过加载字体的方式来使用android中不曾提供的字体; ...

  6. RestSharp .net 轻量级rest客户端

    RestSharp Simple REST and HTTP API Client for .NET 官网:http://restsharp.org/ GiHub: https://github.co ...

  7. POJ1780-Code(欧拉路径求解)

    题目链接:poj1780-Code 题意:有个保险箱子是n位数字编码,当正确输入最后一位编码后就会打开(即输入任意多的数字只有最后n位数字有效)……要选择一个好的数字序列,最多只需按键10n+n-1次 ...

  8. mac iterm2快捷键

    快捷揵 这大概是item吸引用户的魅力所在了. 1.⌘ +数字在各 tab标签直接来回切换 2.选择即复制 + 鼠标中键粘贴,这个很实用 3.⌘ + f所查找的内容会被自动复制 4.⌘ + d 横着分 ...

  9. MySQL 建库、建用户及建表事项

    1,MySQL建库语句比较简单,一句话: create database tppamltest3 2,创建用户及授权: insert into mysql.user(Host,User,Passwor ...

  10. 最新版Intel HD4000 桌面右键菜单去除方法

    网上找了一圈都提示找不到指定模块,后来发现它换dll了 regsvr32 /u igfxDTCM.dll