2 qq 33691951 qq_33691951 于 2016.04.07 00:49 提问

怎么将a+bi形式的字符串转变成复数呢
c#

怎么将a+bi形式的字符串转变成复数呢这是我的转换的代码,这样错不知道怎么改了,待大神指教图片图片

4个回答

herozhangbz
herozhangbz   2016.04.07 10:22
已采纳

你写是个啥写这么多都没用,你用int i = s.IndexOf("+", 0);就能找到+所在的索引,楼上的回答很简洁实用。string操作并不只是substring,你直接用split('+')就能把你的字符串分成两个部分就是实部和虚部i。你再split('i')[0]或者replace('i',"")用空格填充然后trim格式化去掉空格。

            string s = "123+5i";
            double real, image;
            real = double.Parse(s.Split('+')[0]);
            image = double.Parse(s.Split('+')[1].Split('i')[0]);
            Complex cop = new Complex(real, image);

你用substring也能弄出来

           string s = "123+5i";
            double real, image;
            real = double.Parse(s.Substring(0, s.IndexOf('+')));
            image = double.Parse(s.Substring(s.IndexOf('+'),s.Length - 1 - s.IndexOf('+')));

看着麻烦还容易出错

herozhangbz
herozhangbz 回复qq_33691951: 有点没有看懂你的意思,a+bi这里的ab都是实数,也就是ab可以是负数。你的意思是-12-5i或者12-5i这种形式的不好处理是么?
一年多之前 回复
qq_33691951
qq_33691951 如果实部和虚部都是复数分割实部和虚部时就两个负号了不好弄吖,所以我就用for循环来将第一个字符是负号的情况单独拿出来了
一年多之前 回复
qq_33691951
qq_33691951 谢谢
一年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.04.07 01:00

假设基于
http://ask.csdn.net/questions/247718
这里我的代码

string s = "1+2i";
int x = int.Parse(s.Split('+')[0].Trim());
int y = int.Parse(s.Split('+')[1].Replace("i", "").Trim());
Complex c = new Complex(x, y);

如果问题解决(包括上个问题),请帮我采纳下,方法是点我回答右边的采纳按钮。谢谢

caozhy
caozhy 回复qq_33691951: 没关系,你试试我地代码就知道了
一年多之前 回复
qq_33691951
qq_33691951 就是如果不知道a代表的是呐几尾数呢?就是输入的复数形式的字符串是随便输入的要求转换成复数,比如可能是-45678998+854649646i 也可能是2+3i呢?我的代码好像进入死循环了,for循环一直出不来
一年多之前 回复
herozhangbz
herozhangbz   2016.04.07 10:30

忘了说了你要引用using System.Numerics;找一下这个.net组件他的复数形式就是(123,5)形式,应该可以进行复数间的运算操作,我没试过

herozhangbz
herozhangbz   2016.04.07 21:28

我再帮你考虑下实部虚部有负数的情况

            string s = "-123-5i";
            double real, image;
            if (s.Contains('+'))
            {
                real = double.Parse(s.Split('+')[0]);
                image = double.Parse(s.Split('+')[1].Split('i')[0]);
            }
            else
            {
                real = double.Parse(s.Substring(0, s.LastIndexOf('-')));
                image = double.Parse(s.Substring(s.LastIndexOf('-'), s.Length - 1 - s.LastIndexOf('-')));
            }
            Complex cop = new Complex(real, image);
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!