编译语言-简单的单词识别程序

  • 格式:doc
  • 大小:55.00 KB
  • 文档页数:4

实验一简单的单词识别程序
一、实验内容
设计一个识别单词的程序,从文本文件中读取字符串,将字符串中的字符根据空格逐个识别为单词,并比较单词是否为zero,one,two,three,four,five,six,seven,eight,nine,若是则输出该单词对应的阿拉伯数字。

要求用JAVA语言、图形界面方式编程。

(可参考实验指导书P110至P113)
举例:若文本文件中的字符串为one at are three six 234 eight 则输出为1368
二、程序代码
DistinguishWord.java
package zlf;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DistinguishWord extends JApplet{
private JFileChooser jfc = new JFileChooser(new File("."));
private JTextArea jta1 = new JTextArea();
private JTextArea jta2 = new JTextArea();
private JButton jlb1 = new JButton("字符串的内容为:");
private JButton jlb2 = new JButton("其中英文对应的阿拉伯数字为:");
private JLabel fileName = new JLabel(" Filename ");
private JTextField jtf = new JTextField(30);
private JButton brower = new JButton("Brower");
public DistinguishWord(){
JPanel p1 = new JPanel();
p1.setLayout(new BorderLayout());
p1.setBorder(BorderFactory.createEmptyBorder(5,5,5,10));
p1.add(jlb1,BorderLayout.NORTH);
p1.add(new JScrollPane(jta1), BorderLayout.CENTER);
add(p1,BorderLayout.CENTER);
JPanel p2 = new JPanel();
p2.setLayout(new BorderLayout());
p2.setBorder(BorderFactory.createEmptyBorder(5,5,5,10));
p2.add(jlb2,BorderLayout.NORTH);
p2.add(new JScrollPane(jta2), BorderLayout.CENTER);
add(p2,BorderLayout.EAST);
JPanel p3 = new JPanel();
p3.setLayout(new BorderLayout());
p3.add(fileName,BorderLayout.WEST);
p3.add(jtf);
p3.add(brower, BorderLayout.EAST);
add(p3,BorderLayout.SOUTH);
jtf.setText("C:/1.txt");
brower.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
open();
}
});
jtf.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e)
{
if(e.getKeyChar()==KeyEvent.VK_ENTER ) //按回车键执行相应操作;
{
String file = jtf.getText();
try {
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
byte[] b = new byte[in.available()];
in.read(b,0,b.length);
jta1.append(new String(b,0,b.length));
in.close();
} catch (IOException e1) {
jta1.setText("Error opening ");
}
}
}
});
jlb2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String s = jta1.getText();
jta2.setText(translateFigure(s));
}
});
}
private String translateFigure(String string){
String[] english = {"zero","one","two","three","four","five","six","seven","eight","nine"};
String s = string;
String str = "";
String t = "";
int n = 0;
char[] ch = s.toCharArray();
for(int i = 0; i < s.length(); i++){
if(ch[i] == ' '||ch[i] == '.'||ch[i] == ','){
t = s.substring(n, i);
n = i+1;
for(int j = 0; j < 10; j++){
if(t.equals(english[j]))
str = str + j;
}
}
}
return str;
}
private void open(){
if(jfc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) open(jfc.getSelectedFile());
}
private void open(File file){
try{
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
byte[] b = new byte[in.available()];
in.read(b,0,b.length);
jta1.append(new String(b,0,b.length));
in.close();
jtf.setText(file.getName());
}
catch(IOException ex){
jtf.setText("Error opening " + file.getName());
}
}
}
1.txt
one at are three six 234 eight
三、实验结果
截图:
简单说明:字符串内容框内可输入内容,点击“其中英文对应的阿拉伯数字为:”按钮可得出结果,或者在Filename后输入文件路径与文件名后回车,字符串内容框会显示文本文件内容,此时再点击“其中英文对应的阿拉伯数字为:”按钮可得出结果,或者在“Brower”按钮查找文件显示在字符串内容框内,再点击“其中英文对应的阿拉伯数字为:”按钮可得出结果。

(PS:1.输入的字符串最后需要加个句号/逗号或者空个格,否则最后一个单词无法识别。

2.1.txt存放在C盘,默认情况下Filename显示“C:/1.txt”)。