Zašto ne pročitaš šta se nalazi ispred "j" ? Znači to bi bilo nešto ovako:
Code (csharp):
public Complex Vracanje_Complex
(string s
)
{
double r
= Convert
.ToDouble(s
.Substring(0,
s
.LastIndexOf(" ")));
int len
= s
.Length - (s
.IndexOf("j") + 1);
double i
= Convert
.ToDouble(s
.Substring(s
.IndexOf("j") + 1, len
));
//provera da li je broj negativan
if(s
.Substring(s
.IndexOf("j")-1,
1)=="-")
i
= -i
;
return new Complex
(r, i
);
}
Ovo bi trebalo da ti radi posao, mada samo kada je kompleksan broj zadat u
strogo određenom formatu. Da bi se lepo parsirao string i kada su zapisani
drugačije, ili sa više razmaka (recimo prvo imaginaran deo, pa onda
realan), trebao bi da probaš da promeniš algoritam.
Evo jedne ideje: ako je uvek ovaj format stringa kao u primeru koji si
dao, zašto ne bi uzeo od celog stringa s="1.234 -j4.1234" ovaj deo:
"-j4.1234", i zatim izbaciš "j" i ostaje ti "-4.1234" i to onda proslediš
za konvertovanje u double. Tada nećeš imati problema sa znakom.
Usput, ne moraš koristiti Convert.ToDouble(string), imaš u klasi double
metodu Parse (double.Parse(string)).
--
Using Opera's revolutionary email client:
http://www.opera.com/mail/