//面向过程计算器
//思路: 需要注意的是: 两个数相除 除数不能为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. mysql 存储过程 demo

    -- 查看存储过程 SHOW PROCEDURE STATUS; -- 显示pro存储过程的详细信息 SHOW CREATE PROCEDURE pro; -- 删除pro存储过程 DROP PROC ...

  2. 你必须知道的28个HTML5特征、窍门和技术

    注意:每周有那么几次,此列表会更新一些新的窍门,最终,本文会成为超级有用的资源.//zxx:丑话说在前头,我可没功夫更新,所以,即使到您女儿出嫁那天,本文还是28项内容 前端的发展如此之迅猛,一不留神 ...

  3. jq实现楼层切换效果

    <!DOCTYPE html> <html> <head> <style> * { margin: 0; padding: 0; box-sizing: ...

  4. hdu1157 快排

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1157 大意:排序,取中间数. PS:1.自己实现了下快排函数,也可以使用#include<algor ...

  5. informix数据库下导出表结构

    1)导出数据库中所有的表结构到文件db.sql  $>dbschema -d your_database -t all  db.sql 2)导出数据库中所有的存储过程到文件db.sql  $&g ...

  6. append appendChild appendTo区别

    1.append和appendChild的区别 append是jquery文档操作用法 ① append() 方法在被选元素的结尾(仍然在内部)插入指定内容. $(selector).append(c ...

  7. 通过VBA实现checkbox的全选和反选

    checkbox的全选和反选可以通过VBA来控制,这种设计常见于一些交互式报表,代码如下: 1.分成两个IF判断 Private Sub CheckBox1_Click()  ‘checkbox为总控 ...

  8. python 写入csv文件

    import csv   fieldnames = ['Column1', 'Column2', 'Column3', 'Column4'] rows = [{'Column1': '0', 'Col ...

  9. hdu-------(1848)Fibonacci again and again(sg函数版的尼姆博弈)

    Fibonacci again and again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

  10. javaWeb学习之运用myeclipse结合tomcat开发一些简单的jsp和service

    servlet是什么?     servlet是java服务器端编程.不同于我们之前写的一般的java应用程序,Servlet程序是运行在服务器上的,服务器有很多种.....现在只是用过 tomcat ...