using hnn0731.Domain; //包含在同一命名空间里。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace hnn0731
{
class Program
{

static void Main(string[] args)
{
Console.WriteLine("请输入用户名:");
String userName = Console.ReadLine();
int count = 0;
while (userName != "admin")
{
count++;
if (count == 3)
{
Console.WriteLine("输入用户名错误超过三次,将重新进入!");
System.Threading.Thread.Sleep(1000);

}
Console.WriteLine("用户名错误,请重新输入!!!");
Console.WriteLine("请输入用户名:");
userName = Console.ReadLine();
}
Console.WriteLine("请输入密码:");
String password = Console.ReadLine();
//int countpass = 0;
while (password != "password")
{
Console.WriteLine("密码错误,请重新输入!!!");
Console.WriteLine("请输入密码:");
password = Console.ReadLine();
}
Console.WriteLine("登陆成功!!!");

int select = 1;
while (select == 1)
{
Console.WriteLine("欢迎进入计算器空间!!!");
Console.WriteLine("请输入要计算的数字类型:整型选择1,浮点型选择2");
int type = Convert.ToInt32(Console.ReadLine());

if (type == 1)
{
Console.WriteLine("请输入要计算的第一个数字:");
int num1 = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("请输入要计算的符号:");
string sigh = Convert.ToString(Console.ReadLine());

Console.WriteLine("请输入要计算的第二个数字:除数不能为0");
int num2 = Convert.ToInt32(Console.ReadLine());

Test<int> ti = new Test<int>();
switch (sigh)
{
case "+": Console.WriteLine("int:{0}{1}{2}={3}", num1, sigh, num2, ti.add(num1, num2));
break;
case "-": Console.WriteLine("int:{0}{1}{2}={3}", num1, sigh, num2, ti.subdu(num1, num2));
break;
case "*": Console.WriteLine("int:{0}{1}{2}={3}", num1, sigh, num2, ti.multi(num1, num2));
break;
case "/": Console.WriteLine("int:{0}{1}{2}={3}", num1, sigh, num2, ti.divi(num1, num2));
break;
}
//object a = 1;
//Console.WriteLine(a);
//Console.WriteLine(a.GetType());
//Console.WriteLine(a.ToString());

}
else
{
Console.WriteLine("请输入要计算的第一个数字:");
double num1 = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("请输入要计算的符号:");
string sigh = Convert.ToString(Console.ReadLine());

Console.WriteLine("请输入要计算的第二个数字:");
double num2 = Convert.ToDouble(Console.ReadLine());
Test<double> ti = new Test<double>();

switch (sigh)
{
case "+": Console.WriteLine("double:{0}{1}{2}={3}", num1, sigh, num2, ti.add(num1, num2));
break;
case "-": Console.WriteLine("double:{0}{1}{2}={3}", num1, sigh, num2, ti.subdu(num1, num2));
break;
case "*": Console.WriteLine("double:{0}{1}{2}={3}", num1, sigh, num2, ti.multi(num1, num2));
break;
case "/": Console.WriteLine("double:{0}{1}{2}={3}", num1, sigh, num2, ti.divi(num1, num2));
break;
}

}
Console.WriteLine("是否要继续使用计算机,是请输入1,否输入0");
select = Convert.ToInt32(Console.ReadLine());
}
//Console.ReadKey();
}

}
}

引用的函数:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace hnn0731.Domain
{
class Test<T>
{
//加法
public T add(T t1, T t2)
{
//object tem1=t1,tem2=t2;
if (t1 is int)
{
object ret = Convert.ToInt32(t1) + Convert.ToInt32(t2);
return (T)ret;
}
else if (t1 is double)
{
object ret = Convert.ToDouble(t1) + Convert.ToDouble(t2);
return (T)ret;
}
return t1;
}
//减法
public T subdu(T t1, T t2)
{

if (t1 is int)
{
object ret = Convert.ToInt32(t1) - Convert.ToInt32(t2);
return (T)ret;
}
else if (t1 is double)
{
object ret = Convert.ToDouble(t1) - Convert.ToDouble(t2);
return (T)ret;
}
return t1;
}
//乘法
public T multi(T t1, T t2)
{

if (t1 is int)
{
object ret = Convert.ToInt32(t1) * Convert.ToInt32(t2);
return (T)ret;
}
else if (t1 is double)
{
object ret = Convert.ToDouble(t1) * Convert.ToDouble(t2);
return (T)ret;
}
return t1;
}
//除法
public T divi(T t1, T t2)
{
if (Convert.ToInt32(t2) != 0)
{
if (t1 is int)
{
object ret = Convert.ToInt32(t1) / Convert.ToInt32(t2);
return (T)ret;
}
// 在 C# 的统一类型系统中,所有类型(预定义类型、用户定义类型、引用类型和值类型)
//都是直接或间接从 Object 继承的。可以将任何类型的值赋给 object 类型的变量。
//将值类型的变量转换为对象的过程称为“装箱”。
//将对象类型的变量转换为值类型的过程称为“取消装箱”。
else if (t1 is double) //判断t1是否为double类型
{
object ret = Convert.ToDouble(t1) / Convert.ToDouble(t2);
return (T)ret;
}

}
else
{
Console.WriteLine("输入错误!!!");
object ret = 0;
return (T)ret;
}
return t1;

}
}

}

转载于:https://www.cnblogs.com/0280-hnn/p/7264388.html

使用泛型 ,做计算器相关推荐

  1. 用python做计算器(低级版)

    用python做计算器(低级版) 今天突然找不到电脑上的计算器了,就自己做了一个计算器的程序. 首先,我们先定义一个input的函数 num1 = input ("Enter the fir ...

  2. 手把手教MFC做计算器

    手把手教MFC做计算器 创建时间:2011年7月19日(星期二) 下午4:56 | 分类:未分类 | 字数:6671 | 发送到我的Qzone | 另存为... | 打印 手把手教MFC做计算器 (2 ...

  3. java做计算器_java实现简单计算器

    本文实例为大家分享了java实现简单计算器的具体代码,供大家参考,具体内容如下 思路:定义一个主框架Frame,我们对原设计的草图进行划分,以方便后面的布局 下面我们来对主框架进行划分 如图,我们将主 ...

  4. python做计算器时常出现的问题及解决办法_正在使用一个基本的python计算器,但无法使菜单正常循环...

    为了提高效率,我会做一些事情..在 选项应该是字典...你的in在字典上比在列表上有效得多.这一点的好处是,每个键的值都可以是函数方法.在 例如options = {1: 'sum', 2: 'sub ...

  5. java 做计算器 百度云_用Java做一个简单的计算器

    窗体 package Calc; import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * * 计算器程序6261 ...

  6. c语言不用switch做计算器,超级新手,用switch写了个计算器程序,求指导

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我也写过一个....看样子大家都喜欢用 switch()来写计算机 ....百度排版是渣渣!!!!! # include intmain(void){ d ...

  7. matlab做计算器纯代码,**matlab GUI-纯编程实现简单计算器**

    作者:ERIC_崔浩 clear,clc,close all chang=65; str={'1' '2' '3' '+'; '4' '5' '6' '-'; '7' '8' '9' '*'; '0' ...

  8. pythongui做计算器_python 实现简单的计算器(gui界面)

    运行效果: 完整代码 from tkinter import * def click(num): global op op=op+str(num) iptext.set(op) def evaluat ...

  9. pythontkinter做计算器_Python Tkinter实现简易计算器功能

    闲暇时间用tkinter写了个简易计算器,可实现简单的加减乘除运算,用了Button和Entry2个控件,下面是代码,只是简单的用了偏函数partial,因为那么多button的大部分参数都是一样的, ...

最新文章

  1. 霍尔传感器与直流无刷电机换相
  2. web本地存储-IndexedDB
  3. 全部python编程语言-可以用 Python 编程语言做哪些神奇好玩的事情?
  4. redis 五大数据结构__常用命令
  5. 九、oracle 事务
  6. 互斥锁在python中的应用
  7. 在WordPress中添加简书风格的连载目录和文章导航
  8. Andorid之taskAffinity 和 FLAG_ACTIVITY_NEW_TASK
  9. Python3+selenium+BaiduAI识别并下载花瓣网高颜值妹子图片
  10. Android kotlin 系列讲解(基础篇) Any和Any?
  11. 牛腩——遇到的问题总结
  12. mac 不显示 外接屏幕_苹果电脑外接显示器显示不出来 - 卡饭网
  13. Android自定义控件之拓展TextView(ExpandTextView)
  14. matlab中输入数学符号,matlab中特殊符号的写法
  15. 在DJI大疆做算法的日常工作与体验~
  16. 彻底关闭win11自动更新
  17. 【codeblocks】Mingw libgcc_s_sjlj-1.dll is missing解决方案
  18. 金链盟中国区块链应用大赛正式启动,200万奖金将花落谁家?
  19. (三)Horizon 队列管理工具
  20. liunx下通过Canal将MySQL数据同步到Elasticsearch

热门文章

  1. 国二vb计算机过的办法,国二计算机VB教程10.ppt
  2. 单片机声光电子琴程序流程图_基于单片机的智能家居控制系统毕业设计
  3. Crystal Office Maple中文版
  4. office365中文版
  5. Chrome添加Axure RP插件
  6. 关于虚函数的应用(10个例子)
  7. 在Windows IoT上使用网络摄像头
  8. 【图像处理】【计算机视觉】线性邻域滤波专场:方框滤波、均值滤波与高斯滤波...
  9. git :设置 object-c 的忽略文件
  10. MSSQL · 最佳实践 · 使用混合密钥实现列加密