A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 马炜亮 于 2013-6-5 14:51 编辑


object  sum="1+2";
Console.WriteLine(sum);
怎样让输出的是3而不是"1+2"?





评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

10 个回复

倒序浏览
这个不行吧,
你这个运算符已经算是字符串性质了
回复 使用道具 举报
+”在C#中有两种意义:
1.        在数学中的加法运算:两边参与加法运算的数据类型为数字类型,则“+
“表示数学上的加法意义。
2.        是连接的意思:两边参与加号运算的数据,有一个是字符类型,那么这个“+“好就是连接的意义。
所以:要想让输出的为运算结果,就必须保证“+”两边都为数字类型的数据。字符串可用
int a=conver.ToInt32("带转换的字符串");
或者 int b=int.parse("字符串");
将字符串转换成数字后就能 得到你想要的输出结果呢

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
根据你题目的意思:
“1+2";是字符串类型
如果你改写成:object sum=1+2;  也可以输出结果3
并且字符串“1+2” 是不能转换成数字的
建议你还是好好加强下基础,多看视频,很基本的概念而已
回复 使用道具 举报
下面是我从网上找到的资料,希望对你有所帮助。
/// <summary>
/// 将字符串中的运算符按正常计算 例如按四则运算
/// </summary>
/// <param name="expression">标准表达式如 1+15*0.5-200</param>
/// <returns>返回计算的值,可以为任意合法的数据类型</returns>
protected static object MathCalculate(string expression)
{
    object retvar = null;
    Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider();
    System.CodeDom.Compiler.CompilerParameters cp = new System.CodeDom.Compiler.CompilerParameters(
    new string[] { @"System.dll" });
    StringBuilder builder = new StringBuilder("using System;class CalcExp{public static object Calc(){ return \"expression\";}}");
    builder.Replace("\"expression\"", expression);
    string code = builder.ToString();
    System.CodeDom.Compiler.CompilerResults results;
    results = provider.CompileAssemblyFromSource(cp, new string[] { code });
    if (results.Errors.HasErrors)
    {
        retvar = null;
    }
    else
    {
        System.Reflection.Assembly a = results.CompiledAssembly;
        Type t = a.GetType("CalcExp");
        retvar = t.InvokeMember("Calc", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.InvokeMethod
            , System.Type.DefaultBinder, null, null);
    }
    return retvar;
}

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
xiangsoft 发表于 2013-6-4 00:21
这个不行吧,
你这个运算符已经算是字符串性质了

:)兄弟,这个是可以的,处理代码会方便很多。办法见下边。。
回复 使用道具 举报
sdjngl123 发表于 2013-6-4 00:30
你可以进行字符串进行字符获取,获取数字并判断当前字符是否为+、-、*、/,如果为这四个字符中的一个,前面 ...

:)谢谢啦,想的很周到哈,讲的也很详细哈。
回复 使用道具 举报
a724228803 发表于 2013-6-4 06:09
根据你题目的意思:
“1+2";是字符串类型
如果你改写成:object sum=1+2;  也可以输出结果3

谢谢你的建议:)
回复 使用道具 举报
王洪磊 发表于 2013-6-4 10:42
下面是我从网上找到的资料,希望对你有所帮助。
///  
/// 将字符串中的运算符按正常计算 例如按四则运算

兄弟你给的这个方法功能很强大,我收藏了,谢谢哈。    :lol
  处理比较简单的我找到了一种代码比较少的办法,分享下哈:
            DataTable dt = new DataTable();//要先  using System.Data;
            object sum = dt.Compute("1+2","");
            Console.WriteLine(sum);//这样输出的就是3而不是"1+2"了。
回复 使用道具 举报
a724228803 发表于 2013-6-4 06:09
根据你题目的意思:
“1+2";是字符串类型
如果你改写成:object sum=1+2;  也可以输出结果3

你没理解楼主的意思。。
回复 使用道具 举报
呵呵,用字符串分隔吧。。。
object sum = "1+2";
string[] str = sum.ToString().Split('+');
int num = Convert.ToInt32(str[0]) + Convert.ToInt32(str[1]);
Console.WriteLine(num);
/**********************输出的是3**********************/
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马