java的多项式的加减乘除和赋值错误问题
package calculator;import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JSeparator;
import java.awt.Font;
public class Test {
private JFrame frame;
private JTextField duoxiangshi1;
private JTextField duoxiangshi2;
private JTextField Jieguo;
String xishu1[]=new String[10000];
String zhishu1[]=new String[10000];
String xishu2[]=new String[10000];
String zhishu2[]=new String[10000];
double dxishu1[]=new double[10000];
double dzhishu1[]=new double[10000];
double dxishu2[]=new double[10000];
double dzhishu2[]=new double[10000];
double dxishu3[]=new double[10000];
double dzhishu3[]=new double[10000];
private JTextField fuzhi1;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Test window = new Test();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Test() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setTitle("\u4E00\u5143\u591A\u9879\u5F0F\u8BA1\u7B97\u5668");
frame.setBounds(100, 100, 646, 514);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
duoxiangshi1 = new JTextField();
duoxiangshi1.addKeyListener(new KeyAdapter(){
public void keyTyped(KeyEvent e) {
int keyChar = e.getKeyChar();
if((keyChar >= KeyEvent.VK_0 && keyChar <= KeyEvent.VK_9)||keyChar==KeyEvent.VK_MINUS||
keyChar==KeyEvent.VK_PERIOD||keyChar==KeyEvent.VK_X||keyChar==KeyEvent.VK_CIRCUMFLEX){
}else{
e.consume();
}
}
});//输入控制
duoxiangshi1.setText("1*x^2+3*x^4+5*x^6");
duoxiangshi1.setBounds(114, 33, 402, 21);
frame.getContentPane().add(duoxiangshi1);
duoxiangshi1.setColumns(10);
JButton queren1 = new JButton("\u786E\u5B9A");
queren1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s1=duoxiangshi1.getText();
String str1 = new String();
String[] xiang=s1.split("\\+");//分离每一个项
int xiangshu=xiang.length;
for (int i=0;i<xiangshu;i++)
{
str1 +=(xiang[i]+"*x^"); //为分离指数 和系数做准备
}
String[] x=str1.split("\\*x\\^"); //分离指数和系数
for (int i=0;i<x.length;i+=2)
{
xishu1[i/2]=x[i];
}
for (int i=1;i<x.length;i+=2)
{
zhishu1[(i-1)/2]=x[i];
}
}
});
queren1.setBounds(533, 32, 70, 23);
frame.getContentPane().add(queren1);
duoxiangshi2 = new JTextField();
duoxiangshi2.addKeyListener(new KeyAdapter(){
public void keyTyped(KeyEvent e) {
int keyChar = e.getKeyChar();
if((keyChar >= KeyEvent.VK_0 && keyChar <= KeyEvent.VK_9)||keyChar==KeyEvent.VK_MINUS||
keyChar==KeyEvent.VK_PERIOD||keyChar==KeyEvent.VK_X||keyChar==KeyEvent.VK_CIRCUMFLEX){
}else{
e.consume();
}
}
});//输入控制
duoxiangshi2.setText("1*x^2+4*x^5+3*x^4");
duoxiangshi2.setColumns(10);
duoxiangshi2.setBounds(114, 64, 402, 21);
frame.getContentPane().add(duoxiangshi2);
JButton queren2 = new JButton("\u786E\u5B9A");
queren2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String s1=duoxiangshi1.getText();
String str1 = new String();
String[] xiang=s1.split("\\+");//分离每一个项
int xiangshu=xiang.length;
for (int i=0;i<xiangshu;i++)
{
str1 +=(xiang[i]+"*x^"); //为分离指数 和系数做准备
}
String[] x=str1.split("\\*x\\^"); //分离指数和系数
for (int i=0;i<x.length;i+=2)
{
xishu2[i/2]=x[i];
}
for (int i=1;i<x.length;i+=2)
{
zhishu2[(i-1)/2]=x[i];
}
}
});
queren2.setBounds(533, 63, 70, 23);
frame.getContentPane().add(queren2);
Jieguo = new JTextField();
Jieguo.setEditable(false);//设置开始不能输入文本
Jieguo.setColumns(10);
Jieguo.setBounds(114, 122, 402, 21);
frame.getContentPane().add(Jieguo);
//多项式加法
JButton jia = new JButton("+");
jia.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String jieguo=new String();
for(int i=0;i<10000;i++)//将string数组转化成double
{
if(xishu1[i]!=null||zhishu1[i]!=null)
{
dxishu1[i]=new Double(xishu1[i]);
dzhishu1[i]=new Double(zhishu1[i]);
}
if(xishu2[i]!=null||zhishu2[i]!=null)
{
dxishu2[i]=new Double(xishu2[i]);
dzhishu2[i]=new Double(zhishu2[i]);
}
}
for(int i=0;i<10000;i++)//录入
{
dzhishu3[i]=dzhishu1[i];
dxishu3[i]=dxishu1[i];
}
for(int i=0;i<10000;i++)//计算
{
int k=1,queren=0;
if(dzhishu3[i]==dzhishu2[i])//如果指数相等,系数相加
{
dxishu3[i]+=dxishu2[i];
}
if(dzhishu3[i]!=dzhishu2[i])//如果指数不等
{
for (int j=0;j<10000;j++)
{
if (dzhishu2[i]==dzhishu3[j])//如果该项的指数与其他项的指数相等
{
dxishu3[j]+=dxishu2[i];
queren=1;
break;
}
}
if(queren==0)//如果该项的指数与其他项的指数都不等,新建一项
{
dxishu3[dzhishu3.length+k]+=dxishu2[i];
dzhishu3[dzhishu3.length+k]+=dzhishu2[i];
k++;
}
}
queren=0;
}
for(int i=0;i<10000;i++)//删除系数为零的项
{
if(dxishu3[i]==0)
{
dzhishu3[i]=0;
}
}
for(int i=0;i<10000;i++)//输出结果
{
if(dxishu3[i]!=0||dzhishu3[i]!=0) {
jieguo+=dxishu3[i]+"*x^"+dzhishu3[i]+"+";
}
}
jieguo = jieguo.substring(0,jieguo.length()-1);
Jieguo.setText(jieguo);
}
});
jia.setBounds(114, 89, 93, 23);
frame.getContentPane().add(jia);
//多项式减法
JButton jian = new JButton("-");
jian.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String jieguo=new String();
for(int i=0;i<10000;i++)//将string数组转化成double
{
if(xishu1[i]!=null||zhishu1[i]!=null)
{
dxishu1[i]=new Double(xishu1[i]);
dzhishu1[i]=new Double(zhishu1[i]);
}
if(xishu2[i]!=null||zhishu2[i]!=null)
{
dxishu2[i]=new Double(xishu2[i]);
dzhishu2[i]=new Double(zhishu2[i]);
}
}
for(int i=0;i<10000;i++)//录入
{
dzhishu3[i]=dzhishu1[i];
dxishu3[i]=dxishu1[i];
}
for(int i=0;i<10000;i++)//计算
{
int k=1,queren=0;
if(dzhishu3[i]==dzhishu2[i])//如果指数相等,系数相加
{
dxishu3[i]-=dxishu2[i];
}
if(dzhishu3[i]!=dzhishu2[i])//如果指数不等
{
for (int j=0;j<10000;j++)
{
if (dzhishu2[i]==dzhishu3[j])//如果该项的指数与其他项的指数相等
{
dxishu3[j]-=dxishu2[i];
queren=1;
break;
}
}
if(queren==0)//如果该项的指数与其他项的指数都不等,新建一项
{
dxishu3[dzhishu3.length+k]-=dxishu2[i];
dzhishu3[dzhishu3.length+k]+=dzhishu2[i];
k++;
}
}
queren=0;
}
for(int i=0;i<10000;i++)//删除系数为零的项
{
if(dxishu3[i]==0)
{
dzhishu3[i]=0;
}
}
for(int i=0;i<10000;i++)//输出结果
{
if(dxishu3[i]!=0||dzhishu3[i]!=0) {
jieguo+=dxishu3[i]+"*x^"+dzhishu3[i]+"+";
}
}
jieguo = jieguo.substring(0,jieguo.length()-1);
Jieguo.setText(jieguo);
}
});
jian.setBounds(217, 89, 93, 23);
frame.getContentPane().add(jian);
JButton cheng = new JButton("*");
cheng.setBounds(320, 89, 93, 23);
frame.getContentPane().add(cheng);
JButton chu = new JButton("/");
chu.setBounds(423, 89, 93, 23);
frame.getContentPane().add(chu);
JLabel label = new JLabel("\u7B2C\u4E00\u4E2A\u591A\u9879\u5F0F\uFF1A");
label.setBounds(26, 36, 93, 15);
frame.getContentPane().add(label);
JLabel label_1 = new JLabel("\u7B2C\u4E8C\u4E2A\u591A\u9879\u5F0F\uFF1A");
label_1.setBounds(26, 67, 93, 15);
frame.getContentPane().add(label_1);
JLabel label_2 = new JLabel("\u64CD\u4F5C\u9009\u62E9\uFF1A");
label_2.setBounds(26, 93, 93, 15);
frame.getContentPane().add(label_2);
JLabel label_3 = new JLabel("\u8BA1\u7B97\u7ED3\u679C\uFF1A");
label_3.setBounds(26, 125, 93, 15);
frame.getContentPane().add(label_3);
JSeparator separator = new JSeparator();
separator.setBounds(8, 153, 612, 15);
frame.getContentPane().add(separator);
JLabel label_4 = new JLabel("\u591A\u9879\u5F0F\u8D4B\u503C");
label_4.setFont(new Font("楷体", Font.PLAIN, 16));
label_4.setBounds(26, 161, 112, 28);
frame.getContentPane().add(label_4);
fuzhi1 = new JTextField();
fuzhi1.setBounds(114, 192, 402, 21);
frame.getContentPane().add(fuzhi1);
fuzhi1.setColumns(10);
}
}