⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tpanel.java

📁 将前缀表达式转为中缀表达式
💻 JAVA
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package pro;import java.awt.*;import javax.swing.*;/** * * @author Administrator */public class Tpanel extends JPanel {    public static String in="";    public J_Tree root;    @Override    protected void paintComponent(Graphics g){                int n,i1,k=0;        double rmark=228,lmark=50,X=rmark;        J_Tree p=null,q=null,p1;        char[] a1;        g.clearRect(0, 0, 500, 500);        n=in.length();        if(n==0){}        else{        a1=new char[n];        a1[0]=in.charAt(0);        p=new J_Tree(a1[0]);         q=p;root=p;        g.drawOval((int)rmark-10,(int)lmark-10,20,20);        g.drawString(""+a1[0],(int)rmark-10+8,(int)lmark-10+15);        for(i1=1;i1<n;i1++){            a1[i1]=in.charAt(i1);            if(a1[i1]=='+'||a1[i1]=='-'||a1[i1]=='*'||a1[i1]=='/'||a1[i1]=='^'){                q=new J_Tree(a1[i1]);                                if(p.left==null){                    p.left=q;                    q.parent=p;                    rmark=rmark/2;lmark=lmark+50;X=X-rmark;                     g.drawLine((int)(X+rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)),                               (int)(lmark-500/java.lang.Math.sqrt(2500+rmark*rmark)),                               (int)(X+rmark-rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)),                               (int)(lmark-50+500/java.lang.Math.sqrt(2500+rmark*rmark)));                    g.drawOval((int)X-10,(int)lmark-10,20,20);                    g.drawString(""+a1[i1],(int)X-10+8,(int)lmark-10+15);                }                else if(p.right==null){                    p.right=q;                    q.parent=p;                    rmark=rmark/2;lmark=lmark+50;X=X+rmark;                    g.drawLine((int)(X-rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)),                               (int)(lmark-500/java.lang.Math.sqrt(2500+rmark*rmark)),                               (int)(X-rmark+rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)),                               (int)(lmark-50+500/java.lang.Math.sqrt(2500+rmark*rmark)));                    g.drawOval((int)(X-10),(int)lmark-10,20,20);                    g.drawString(""+a1[i1],(int)(X-10+8),(int)lmark-10+15);                }                else{                    while(p.right!=null){                        p1=p;                        p=p.parent;                        if(p1==p.right) X=X-rmark;                        else X=X+rmark;                        lmark=lmark-50;                        rmark=rmark*2;                    }                    p.right=q;                    q.parent=p;                    rmark=rmark/2;lmark=lmark+50;X=X+rmark;                    g.drawLine((int)(X-rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)),                               (int)(lmark-500/java.lang.Math.sqrt(2500+rmark*rmark)),                               (int)(X-rmark+rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)),                               (int)(lmark-50+500/java.lang.Math.sqrt(2500+rmark*rmark)));                    g.drawOval((int)(X-10),(int)lmark-10,20,20);                    g.drawString(""+a1[i1],(int)(X-10+8),(int)lmark-10+15);                }                p=q;            }            else{                q=new J_Tree(a1[i1]);                if(p.left==null){                    rmark=rmark/2;lmark=lmark+50;X=X-rmark;if(rmark<8)k=1;                    g.drawOval((int)X-10,(int)lmark-10,20,20);                    g.drawString(""+a1[i1],(int)X-10+8,(int)lmark-10+15);                    g.drawLine((int)(X+rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)),                               (int)(lmark-500/java.lang.Math.sqrt(2500+rmark*rmark)),                               (int)(X+rmark-rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)),                               (int)(lmark-50+500/java.lang.Math.sqrt(2500+rmark*rmark)));                    p.left=q;                    X=X+rmark;rmark=rmark*2;lmark=lmark-50;                                    }                else if(p.right==null){                    rmark=rmark/2;lmark=lmark+50;X=X+rmark;if(rmark<8)k=1;                    g.drawOval((int)(X-10),(int)lmark-10,20,20);                    g.drawString(""+a1[i1],(int)(X-10+8),(int)lmark-10+15);                    p.right=q;                    g.drawLine((int)(X-rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)),                               (int)(lmark-500/java.lang.Math.sqrt(2500+rmark*rmark)),                               (int)(X-rmark+rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)),                               (int)(lmark-50+500/java.lang.Math.sqrt(2500+rmark*rmark)));                    X=X-rmark;rmark=rmark*2;lmark=lmark-50;                                    }                else{                    while(p.right!=null){                        p1=p;                        p=p.parent;                        if(p1==p.right) X=X-rmark;                        else X=X+rmark;                        lmark=lmark-50;                        rmark=rmark*2;                    }                    p.right=q;                    rmark=rmark/2;lmark=lmark+50;X=X+rmark;if(rmark<8)k=1;                    g.drawOval((int)(X-10),(int)lmark-10,20,20);                    g.drawString(""+a1[i1],(int)(X-10+8),(int)lmark-10+15);                    p.right=q;                    g.drawLine((int)(X-rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)),                               (int)(lmark-500/java.lang.Math.sqrt(2500+rmark*rmark)),                               (int)(X-rmark+rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)),                               (int)(lmark-50+500/java.lang.Math.sqrt(2500+rmark*rmark)));                    X=X-rmark;rmark=rmark*2;lmark=lmark-50;                                    }                                }        }        if(k==1){            g.clearRect(0, 0, 456, 800);            g.drawString("树的深度大于5,本软件暂不支持", 150, 200);                    }                }                                                   }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -