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