📄 cifafenxiframe.java
字号:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.StringTokenizer;
import javax.swing.*;
class CiFaFenXiFrame extends JFrame implements ActionListener {
private JTextArea inputTextArea;
private JTextField 标识TextField;
private JTextField 关键字TextField;
private JTextField 运算符TextField;
private JTextField 常数TextField;
private JTextField 分界符TextField;
private JLabel 标识lable;
private JLabel 关键字lable;
private JLabel 运算符lable;
private JLabel 常数lable;
private JLabel 分界符lable;
private JButton beginbutton;
private GridLayout girdlayout;
CiFaFenXiFrame(){
setSize(400,400);
setVisible(true);
Container con=getContentPane();
JPanel inputPanel=new JPanel();
JPanel outputPanel=new JPanel();
inputTextArea=new JTextArea(8,20);
标识TextField=new JTextField(15);
关键字TextField=new JTextField(15);
运算符TextField=new JTextField(15);
常数TextField=new JTextField(15);
分界符TextField=new JTextField(15);
JLabel 标识lable=new JLabel("标识",JLabel.CENTER);
JLabel 关键字lable=new JLabel("关键字",JLabel.CENTER);
JLabel 常数lable=new JLabel("常数",JLabel.CENTER);
JLabel 分界符lable=new JLabel("分界符",JLabel.CENTER);
JLabel 运算符lable=new JLabel("运算符",JLabel.CENTER);
beginbutton=new JButton("开始分析");
inputPanel.add(inputTextArea);inputPanel.add(beginbutton);
girdlayout=new GridLayout(5,2);
outputPanel.setLayout(girdlayout);
outputPanel.add(标识lable);outputPanel.add(标识TextField);
outputPanel.add(关键字lable);outputPanel.add(关键字TextField);
outputPanel.add(运算符lable);outputPanel.add(运算符TextField);
outputPanel.add(常数lable);outputPanel.add(常数TextField);
outputPanel.add(分界符lable);outputPanel.add(分界符TextField);
con.add(inputPanel,BorderLayout.CENTER);
con.add(outputPanel,BorderLayout.SOUTH);
beginbutton.addActionListener(this);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e){
String s1=null,s2=null,s3=null,s4=null,s5=null;
String s=inputTextArea.getText();
StringTokenizer fenxi=new StringTokenizer(s," ;");
int number=fenxi.countTokens();
String inputArray[]=new String[number];
for(int i=0;i<number;i++){
inputArray[i]=fenxi.nextToken();
}
for(int i=0;i<number;i++){
if(gjzbijiao(inputArray[i])){
s1=s1+inputArray[i]+" ";
}
else if(ysfbijiao(inputArray[i])){
s2=s2+inputArray[i]+" ";
}
else if(fjfbijiao(inputArray[i])){
s3=s3+inputArray[i]+" ";
}
else if(csbijiao(inputArray[i]))
{
s5=s5+inputArray[i]+" ";
}
else{
s4=s4+inputArray[i]+" ";
}
}
标识TextField.setText(s5);关键字TextField.setText(s1);
分界符TextField.setText(s3);常数TextField.setText(s4);
运算符TextField.setText(s2);
}
public boolean gjzbijiao(String s){
int count=0;
String guanjianzi[]={"int","for","main","long"};
for(int i=0;i<guanjianzi.length;i++){
if(s.equals(guanjianzi[i])){
count++;
break;
}
}
if(count==1)
return true;
else
return false;
}
public boolean ysfbijiao(String s){
int count=0;
String yunsuanfu[]={"+","-","*","/"};
for(int i=0;i<yunsuanfu.length;i++){
if(s.equals(yunsuanfu[i])){
count++;
break;
}
}
if(count==1)
return true;
else
return false;
}
public boolean fjfbijiao(String s){
int count=0;
String fenjiefu[]={"(",")","{","}"};
for(int i=0;i<fenjiefu.length;i++){
if(s.equals(fenjiefu[i])){
count++;
break;
}
}
if(count==1)
return true;
else
return false;
}
public boolean csbijiao(String s){
int count=0;
for(int i=0;i<s.length();i++){
if(s.charAt(i)<'0'||s.charAt(i)>'9'){
count++;
break;
}
}
if(count==1)
return true;
else
return false;
}
}
public class CiFaFenXi {
public static void main(String args[]){
CiFaFenXiFrame fr=new CiFaFenXiFrame();
fr.pack();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -