输入两个数字和运算符,输出结果。

yeyan8497 2011-03-14 01:56:54
使用asp.net编写一个简单的计算器,实现加减乘除。

在使用c的时候,可以使用:

。。。
int a,c;
char b;
scanf("%d%c%d",&a,&b,&c);
。。。

来传入参数。
但是使用c#来编辑的时候,该怎么输入整型呢?怎么像如上一样分开字符与数字呢?
...全文
2061 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
修改一下昵称 2011-03-14
  • 打赏
  • 举报
回复


public object calculator(object obj1, object obj2, string op)
{
object dt = new DataTable().Compute(string.Format("{0}{2}{1}",obj1,obj2,op), null);
return dt;
}

calculator(5, 3, "-");//2
calculator(5, 3, "+");//8

修改一下昵称 2011-03-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 q107770540 的回复:]
C# code

void Main()
{
int a=5,b=2;
char c='3';
var result=new DataTable().Compute(string.Format("{0}+{1}-{2}",a,b,c),null);
Console.WriteLine(result);//4

}
[/Quote]

学习了...
Kation 2011-03-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yeyan8497 的回复:]
谢谢大家热心的回答,但是我还是没能解决这个问题。= =楼上帅哥的方法,我没见到过。
求解~
[/Quote]
如果你加分到50+,我可以给你解析源码
本人原创,,如果是100就更好啦, 哈哈哈
vrhero 2011-03-14
  • 打赏
  • 举报
回复
你最好把你从C学到的某些规则暂时忘掉...

在.NET中字符虽然本质仍是数字,但由于Unicode编码的原因,每个char都是双字节的...千万不要没事儿在整数和char之间乱转换...

而8楼的示例是告诉你...C#编译器相对于C编译器非常智能,编译器会依据上下文自动判断是否需要类型转换及如何转换...

你要做的只是记住这些规则,知道该用在哪里...至于你在C中学到的那些属于另一套规则,它们对你理解某些现象的本质有帮助但不可套用在这个完全不同的规则体系中...
yeyan8497 2011-03-14
  • 打赏
  • 举报
回复
谢谢大家热心的回答,但是我还是没能解决这个问题。= =楼上帅哥的方法,我没见到过。
求解~
q107770540 2011-03-14
  • 打赏
  • 举报
回复

void Main()
{
int a=5,b=2;
char c='3';
var result=new DataTable().Compute(string.Format("{0}+{1}-{2}",a,b,c),null);
Console.WriteLine(result);//4

}

  • 打赏
  • 举报
回复
有方法的
honkerhero 2011-03-14
  • 打赏
  • 举报
回复
正则表达式
yhnujm##33 2011-03-14
  • 打赏
  • 举报
回复
你可以使用ajax工具,在用户直接与服务器交互,再判断。。。。
Kation 2011-03-14
  • 打赏
  • 举报
回复
我有方法、
分太少了 - -、
秋的红果实 2011-03-14
  • 打赏
  • 举报
回复
没要那种,你要是控制台程序,就用console.read,然后在里面int.parse或Convert.toint32转换成数字
kid_wang 2011-03-14
  • 打赏
  • 举报
回复
int.parse
宝_爸 2011-03-14
  • 打赏
  • 举报
回复
好像没有单独的一个函数就能做到的。
我能想到的就是使用Try.Parse() 或者 Regex
vrhero 2011-03-14
  • 打赏
  • 举报
回复
把Console.ReadLine()分开写,自己过滤输入再抛异常...try catch也可以,但不要养成滥用的习惯,预先能想到的就人工处理...

另外...2.0以后,一般Parse方法都会提供不抛异常的TryParse版本,更适合实现自定义的逻辑...
yeyan8497 2011-03-14
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 vrhero 的回复:]
.NET有完善的异常机制...你可以自定义异常类型或者利用预定义的异常类型...

C# code
throw new System.ArgumentOutOfRangeException("参数名", "除数不可为零");
[/Quote]

你这个是用系统的预制定的吧?
我想要的就是这个了,不过前面的赋值貌似也有些bug,假如我输入的字符串的不是数字(其它的一些),比如:
a = int.Parse(Console.ReadLine());
就会报错(字符串格式)呢。。应该也能用抛出异常的方式来处理吧?否则,程序直接跳错了。呵呵
vrhero 2011-03-14
  • 打赏
  • 举报
回复
.NET有完善的异常机制...你可以自定义异常类型或者利用预定义的异常类型...
throw new System.ArgumentOutOfRangeException("参数名", "除数不可为零");
yeyan8497 2011-03-14
  • 打赏
  • 举报
回复 1
真心谢谢大家的热心帮助,特别10楼的淳淳教导,呵呵。。
最近才开始学c#,还是个菜鸟,问的问题不好,见笑了。

如下是我自己刚才写的代码,感觉容错性不太好。(主要是我还不太熟练try catch。。)
结贴前弱弱的问下,除数为零时应该怎么抛出错误,还有这个a,x,b的赋值应该也要try一下吧。。?


static void Main(string[] args)
{
int a,b,c=0;
char x;
a = int.Parse(Console.ReadLine());
x = char.Parse(Console.ReadLine());
b = int.Parse(Console.ReadLine());
switch (x)
{
case '+': c = a + b; break;
case '_': c = a - b; break;
case '*': c = a * b; break;
case '/':
if (b != 0)
{
c = a / b; break;
}
else
{

break;
}
case '%':
if (b != 0)
{
c = a % b; break;
}
else
{
break;
}
}
Console.WriteLine(c);
}

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧