Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
144 views
in Technique[技术] by (71.8m points)

How To Parse Complex Numbers In Java

I am trying to accept a string with any of the following variations into my method:

"11+6i" "11-6i" "-11-6i"

Using the code I have below, the first two work correctly but for some reason when the string contains two "-" characters I cannot seem to parse it correctly.

Is there anyway to modify my code for it to be able to parse "-11-6i" as well?

Here is my code thus far:

if (passedString.contains("+")) {

        int i = passedString.indexOf("+");
        int endIndex = passedString.indexOf("i");

        String real = passedString.substring(0, i);

        String imag = passedString.substring(i, endIndex);

        MyDouble realNum = new MyDouble(Double.parseDouble(real));
        MyDouble imagNum = new MyDouble(Double.parseDouble(imag));

        cn = new ComplexNumber(realNum, imagNum);

    } else {

        int i = passedString.indexOf("-");

        int endIndex = passedString.indexOf("i");

        String real = passedString.substring(0, i);

        String imag = passedString.substring(i, endIndex);

        MyDouble realNum = new MyDouble(Double.parseDouble(real));
        MyDouble imagNum = new MyDouble(Double.parseDouble(imag));

        cn = new ComplexNumber(realNum, imagNum);

    }
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The best way is to reuse other's code. Take a look at Apache Commons Complex Numbers.

Here is an example from their page:

ComplexFormat cf = new ComplexFormat();
Complex c = cf.parse("1.110 + 2.222i");

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...