要调用窗体“请输入一个复数:”(形式是a+bi)比如输入1+2i 然后程序执行会打印出“此复数实部为:1 虚部为:2 用这个包import javax.swing.JOptionPane;问题补充:如果输入的不是a+bi形式,不用判定出错我是初学者,别扔鸡蛋给我哈

解决方案 »

  1.   


    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.*;
    import javax.swing.WindowConstants;public class MainFrame extends JFrame implements ActionListener
    {
        private JTextField textField;
        public MainFrame()
        {
            super();
            setSize(new Dimension(320, 210));
            setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            setTitle("复数");
            getContentPane().setLayout(null);        textField = new JTextField();
            textField.setBounds(161, 67, 123, 24);
            getContentPane().add(textField);        final JLabel label = new JLabel();
            label.setText("请输入一个复数");
            label.setBounds(39, 70, 121, 18);
            getContentPane().add(label);        final JButton button = new JButton();
            button.setText("确定");
            button.setBounds(161, 116, 123, 27);
            button.addActionListener(this);
            getContentPane().add(button);
        }
        
        public void actionPerformed(ActionEvent e)
        {
            String complexString = textField.getText();
            if(!complexString.matches("\\d+\\+\\d+i"))
            {
                return;
            }
            String[] numGroup = complexString.split("\\+");
            String a = numGroup[0];
            String b = numGroup[1].substring(0, numGroup[1].length() - 1);
            JOptionPane.showMessageDialog(this
                    , "此复数实部为:" + a + " 虚部为:" + b
                    , "结果"
                    , JOptionPane.INFORMATION_MESSAGE);
        }
        
        public static void main(String[] args)
        {
            new MainFrame().show();
        }
        
        
    }
    这个绝对满足楼主要求
      

  2.   

    什么是复数请参见:
    http://baike.baidu.com/view/10078.htm不用 2 楼那么麻烦,代码如下:
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    import javax.swing.JOptionPane;public class ComplexNumber { public static void main(String[] args) {
    String input = JOptionPane.showInputDialog("请输入一个复数:");
    if (input == null) {
    System.exit(0);
    }
    if ((input = input.trim()).length() == 0) {
    JOptionPane.showMessageDialog(null, "输入为空!", "结果", JOptionPane.WARNING_MESSAGE);
    System.exit(0);
    }
    Pattern p1 = Pattern.compile("(-?(?:0|[1-9]\\d*)(?:\\.\\d+)?)\\s*\\+\\s*(-?(?:0|[1-9]\\d*)(?:\\.\\d+)?)i");
    Pattern p2 = Pattern.compile("(-?(?:0|[1-9]\\d*)(?:\\.\\d+)?)\\s*(-\\s*(?:0|[1-9]\\d*)(?:\\.\\d+)?)i");
    Matcher m = null;
    if ((m = p1.matcher(input)).matches() || (m = p2.matcher(input)).matches()) {
    JOptionPane.showMessageDialog(null,
    "此复数实部为:" + m.group(1) + ",虚部为:" + m.group(2).replaceAll("\\s*", ""), "结果",
    JOptionPane.INFORMATION_MESSAGE
    );
    } else {
    JOptionPane.showMessageDialog(null, "复数格式错误!", "结果", JOptionPane.WARNING_MESSAGE);
    }
    }}
      

  3.   

    顺便说一下,2楼的方法还欠火候,不是从复数出发,纯数字加i的方法,而且是整型变量才有用,输入9.8+2.6i就没办法响应了不过还是非常感谢,能这么快响应问题,再次感谢sagezk ,nine_suns99爱死你们啦最重要的是说明我没来错地方  csdn