扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
一、思路:
创新互联是一家以网站建设、网页设计、品牌设计、软件运维、网站推广、小程序App开发等移动开发为一体互联网公司。已累计为资质代办等众行业中小客户提供优质的互联网建站和软件开发服务。
1、建立一个String数组,用来存储用户输入的水果名字。
2、按字典出现的先后顺序即比较字符串大小。可以使用到String对象的compareTo()方法。
3、对比大小后,升序输出。
二、实现:
1、定义输入水果名字的个数,用来确定数组的大小,修改此值可以修改数组的大小。
2、用户输入,用循环实现接收,并存储到数组中。
3、将数据对比大小,按升序排列。使用最简单的冒泡排序法(麻烦易错)或Java的工具类(简单高效)。
4、输出排序后的数组。
实现代码:
//java代码:输入五种水果的英文,按字典出现的先后顺序循环输出。
import java.util.Arrays;
import java.util.Scanner;
public class CompareTest {
/**
* 一、思路:
* 1、建立一个String数组,用来存储用户输入的水果名字。
* 2、按字典出现的先后顺序即比较字符串大小。可以使用到String对象的compareTo()方法。
* 3、对比大小后,升序输出。
* 二、实现:
* 1、定义输入水果名字的个数,用来确定数组的大小,修改此值可以修改数组的大小。
* 2、用户输入,用循环实现接收,并存储到数组中。
* 3、将数据对比大小,按升序排列。使用最简单的冒泡排序法(麻烦易错)或Java的工具类(简单高效)。
* 4、输出排序后的数组。
* */
//定义用户输入数据的个数,修改此值可以修改个数及数据接收数组的大小
public static final int COUNT = 5;
public static void main(String[] args) {
// TODO Auto-generated method stub
//定义接收用户输入数据的数组
String[] fruits = new String[COUNT];
Scanner reader = new Scanner(System.in);
//接收用户输入的数据
System.out.println("请输入"+COUNT+"个水果的英文名字:");
for(int i = 0;i COUNT;i++){
fruits[i] = reader.next();
}
reader.close();
//比较数组中数据的大小,并按升序排列。冒泡法
for(int i = 1;i = (COUNT-1);i++){
for(int n = 0;n (COUNT-i);n++){
if(fruits[n].compareTo(fruits[n+1]) 0){
String temp = null;
temp = fruits[n];
fruits[n] = fruits[n+1];
fruits[n+1] = temp;
}
}
}
//不使用冒泡排序,使用java自带的工具类,一句话即可,排序由底层自动完成
//Arrays.sort(fruits);
//输出排序后的数组,即为字典中的出现顺序
System.out.println("这些水果的英文名在字典中出现的顺序是:");
for(int i =0;i COUNT;i++){
System.out.print(fruits[i] + " ");
}
System.out.println();
}
}
运行结果图:
应注意:程序中使用的比较方式是区分大小写的,如果是不区分大小写的比较方式,应使用compareToIgnoreCase()方法。
省力点的就直接调用第三方翻译接口,然后可以保存到本地数据库,本地数据库也提供维护功能。 简单点的就只自己维护数据库,这是个人意见哦
Dictionary对象用于存储数据关键字和条目对(即类似“key=value”的形式)。它可以存取任何形式的数据的条目。每个条目都与一个唯一的关键字相关联。该关键字用来检索单个条目,通常是整数或字符串,可以是除数组外的任何类型。
下面的代码举例说明了如何创建一个 Dictionary 对象:
Dim d '创建一个变量
Set d = CreateObject(Scripting.Dictionary)
d.Add "a", "Athens" '添加一些关键字和条目
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
Dictionary常用的操作有Add(添加)、Remove(删除)、Exists(检查某个关键字是否在字典中);常用的属性有Item(key)(获取某个关键字对应的数据),等等。
差不多就有点象平时我们在算法中提到的HashTable吧。
Map可以实现类似数据库的功能。比如一个人的姓名和年龄信息你可以存在一个Map里面,就像这样:
MapString, Integer map = new HashMapString, Integer();
map.put("张三", 40);
System.out.println("张三的年龄是:" + map.get("张三");
package zyhz;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.io.*;
import com.sun.media.sound.*;
public class Dictionary {
public Dictionary() {
}
public static void main(String[] args)
{
dicFrame frame = new dicFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class dicFrame extends JFrame
{
public dicFrame()
{
setTitle("Dictionary");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
panel = new JPanel();
add(panel);
//菜单栏
JMenu fileMenu = new JMenu("文件");
JMenuItem ECItem = new JMenuItem("英汉字典");
ECItem.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
text2.setText("请在上面输入英文!!!!");
}
});
JMenuItem CEItem = new JMenuItem("汉英字典");
CEItem.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
text2.setText("请在上面输入中文!!!!");
}
});
//备份词库
JMenuItem BackupItem = new JMenuItem("备份词库");
BackupItem.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException ce) {
System.out.println(ce);
}
url = "jdbc:odbc:test";
String fileName;
chooser = new JFileChooser();
frame = new JFrame();
chooser.setDialogTitle("备份词库为");
try {
flag = chooser.showSaveDialog(frame);
} catch (HeadlessException h) {
System.out.println("Save File Dialog ERROR!");
}
if (flag == JFileChooser.APPROVE_OPTION) {
f = chooser.getSelectedFile();
fileName = chooser.getName(f);
fileName = chooser.getSelectedFile().getPath();
try {
File saveFile = new File(fileName);
FileWriter fw = new FileWriter(saveFile);
try
{
con = DriverManager.getConnection(url);
s = con.createStatement();
rs = s.executeQuery("SELECT * from 字典 ");
while (rs.next()) {
String a = rs.getString("单词");
String b = rs.getString("词语解释");
text2.append(a+b+"\n");
}
rs.close();
} catch (Exception ea) {
text2.setText("查询数据失败");
}
fw.write(text2.getText());
fw.close();
} catch (IOException ec) {
text2.setText(fileName);
}
text2.setText("词库备份成功!");
}
}
});
fileMenu.add(ECItem);
fileMenu.add(CEItem);
fileMenu.add(BackupItem);
fileMenu.addSeparator();
//退出监听器
fileMenu.add(new
AbstractAction("退出")
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
});
JMenu editMenu = new JMenu("编辑");
JMenuItem addItem = new JMenuItem("添加词汇");
addItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
//菜单栏增加监听器
addItem.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
if(text1.getText().equals(""))
text2.setText("没有输入内容!请重新增加!!!");
else
{
String s=text1.getText().trim();
String s1=text2.getText().trim();
text2.setText(new add().jadd(text1.getText().trim(),text2.getText().trim()));
text2.append(s+"\n"+s1+";"+" "+"//"+"该内容已增加!!!");
}
}
});
//菜单栏修改监听器
JMenuItem updateItem = new JMenuItem("修改词汇");
updateItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK));
updateItem.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
if(text1.getText().equals(""))
text2.setText("没输入所要修改的内容!请重新输入!!!!");
else{
String s=text1.getText().trim();
text2.setText(new update().jupdate(text1.getText().trim(),
text2.getText().trim()));
text2.append(s+" "+"//"+"该内容已修改!!!");
}
}
});
//菜单栏删除监听器
JMenuItem deleteItem = new JMenuItem("删除词汇");
deleteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,InputEvent.CTRL_MASK));
deleteItem.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
if(text1.getText().equals(""))
text2.setText("没输入所要删除的内容!请重新输入!!!!");
else{
String s=text1.getText().trim();
text2.setText(new delete().jdelete(text1.getText().trim()));
text2.append(s+" "+"//"+"该内容已删除!!!");
}
}
});
editMenu.add(addItem);
editMenu.add(updateItem);
editMenu.add(deleteItem);
JMenu helpMenu = new JMenu("Help");
helpMenu.setMnemonic('H');
aboutItem = new JMenuItem("About");
aboutItem.setMnemonic('A');
aboutItem.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
new guanyu();
}
});
helpMenu.add(aboutItem);
menubar = new JMenuBar();
setJMenuBar(menubar);
menubar.add(fileMenu);
menubar.add(editMenu);
menubar.add(helpMenu);
//工具栏
label = new JLabel("请输入:");
text1= new JTextField("");
selectButton = new JButton("查询");
//工具栏查询监听器
selectButton.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
if(text1.getText().equals(""))
text2.setText("没有输入查询内容!请重新输入!!!");
else text2.setText(new select().jselect(text1.getText().trim()));
}
});
//工具栏增加监听器
addButton = new JButton("增加");
addButton.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
if(text1.getText().equals(""))
text2.setText("没有输入内容!请重新增加!!!");
else
{
String s=text1.getText().trim();
String s1=text2.getText().trim();
text2.setText(new add().jadd(text1.getText().trim(),text2.getText().trim()));
text2.append(s+"\n"+s1+";"+" "+"//"+"该内容已增加!!!");
}
}
});
//工具栏修改监听器
updateButton = new JButton("修改");
updateButton.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
if(text1.getText().equals(""))
text2.setText("没输入所要修改的内容!请重新输入!!!!");
else{
String s=text1.getText().trim();
text2.setText(new update().jupdate(text1.getText().trim(),
text2.getText().trim()));
text2.append(s+" "+"//"+"该内容已修改!!!");
}
}
});
//工具栏删除监听器
deleteButton = new JButton("删除");
deleteButton.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
if(text1.getText().equals(""))
text2.setText("没输入所要删除的内容!请重新输入!!!!");
else{
String s=text1.getText().trim();
text2.setText(new delete().jdelete(text1.getText().trim()));
text2.append(s+" "+"//"+"该内容已删除!!!");
}
}
});
soundButton = new JButton("读音");
soundButton.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
JavaSoundAudioClip player;
try{
strsound = text2.getText().trim();
FileInputStream ff = new FileInputStream("sound//"+strsound+".wav");
player = new JavaSoundAudioClip(ff);
player.play();
}
catch(Exception e) {
System.out.println("error");
e.printStackTrace();
}
}
});
//万年历
dateButton = new JButton("万年历");
dateButton.addActionListener(new
AbstractAction() {
public void actionPerformed(ActionEvent event)
{
new calendar();
}
});
toolbar = new JToolBar();
add(toolbar,BorderLayout.NORTH);
toolbar.add(label);
toolbar.add(text1);
toolbar.add(selectButton);
toolbar.add(addButton);
toolbar.add(updateButton);
toolbar.add(deleteButton);
toolbar.add(soundButton);
toolbar.add(dateButton);
text2 = new JTextArea(8,40);
text2.setLineWrap(true);
JScrollPane scroll = new JScrollPane(text2);
add(scroll,BorderLayout.CENTER);
//快捷菜单 剪切,复制,粘贴
JPopupMenu popup= new JPopupMenu();
text2.setComponentPopupMenu(popup);
popup.add(new
AbstractAction("剪切",new ImageIcon("cut.gif"))
{
public void actionPerformed(ActionEvent event)
{
text2.cut();
}
});
popup.add(new
AbstractAction("复制",new ImageIcon("copy.gif"))
{
public void actionPerformed(ActionEvent event)
{
text2.copy();
}
});
popup.add(new
AbstractAction("粘贴",new ImageIcon("paste.gif"))
{
public void actionPerformed(ActionEvent event)
{
text2.paste();
}
});
text1.setComponentPopupMenu(popup);
}
public static final int DEFAULT_WIDTH = 400;
public static final int DEFAULT_HEIGHT = 250;
private JPanel panel;
private JMenuBar menubar;
private JToolBar toolbar;
private JLabel label;
private JTextField text1;
private JTextArea text2;
private JButton selectButton;
private JButton addButton;
private JButton updateButton;
private JButton deleteButton;
private JButton soundButton;
private JButton dateButton;
private JMenuItem aboutItem;
private Connection con;
private String url;
private Statement s;
private ResultSet rs;
public BufferedWriter Buffer;
private JFileChooser chooser;
private File f;
private JFrame frame;
private int flag;
private boolean b1;
private String strsound;
}
//查询类
class select {
private Connection con;
private String url;
private PreparedStatement pstmt;
private String sql,zz;
private ResultSet rs;
select() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException ce) {
System.out.println(ce);
}
url = "jdbc:odbc:test";
}
public String jselect(String str) {
try {
con = DriverManager.getConnection(url);
sql = "select 词语解释 from 字典 where 单词=?";
pstmt= con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
pstmt.setString(1,str);
rs = pstmt.executeQuery();
while (rs.next()) {
System.out.print(rs.getString(1));
zz=rs.getString(1);
System.out.println(" ");
}
rs.close();
pstmt.close();
con.close();
} catch (SQLException ce) {
System.out.println(ce);}
return zz;
}
}
//增加类
class add {
private Connection con;
private String url;
private PreparedStatement pstmt;
private String sql,sql1,zz;
private ResultSet rs;
add() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException ce) {
System.out.println(ce);
}
url = "jdbc:odbc:test";
}
public String jadd(String str1,String str2) {
try {
con = DriverManager.getConnection(url);
sql = "insert into 字典 values(?,?)";
pstmt= con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
pstmt.setString(1,str1);
pstmt.setString(2,str2);
pstmt.executeUpdate();
Statement s = con.createStatement();
sql1 = "SELECT * FROM 字典 ";
rs = s.executeQuery(sql1);
while (rs.next()) {
System.out.print(rs.getString(1));
System.out.print(rs.getString(2));
System.out.println(" ");
}
rs.close();
pstmt.close();
con.close();
} catch (SQLException ce) {
System.out.println(ce);}
return zz;
}
}
//修改类
class update {
private Connection con;
private String url;
private PreparedStatement pstmt;
private String sql,sql1,zz;
private ResultSet rs;
update() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException ce) {
System.out.println(ce);
}
url = "jdbc:odbc:test";
}
public String jupdate(String str1,String str2) {
try {
con = DriverManager.getConnection(url);
sql = "UPDATE 字典 SET 词语解释=? WHERE 单词=?";
pstmt= con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
pstmt.setString(1,str1);
pstmt.setString(2,str2);
pstmt.executeUpdate();
Statement s = con.createStatement();
sql1 = "SELECT * FROM 字典 ";
rs = s.executeQuery(sql1);
while (rs.next()) {
System.out.print(rs.getString(1));
System.out.print(rs.getString(2));
System.out.println(" ");
}
rs.close();
pstmt.close();
con.close();
} catch (SQLException ce) {
System.out.println(ce);}
return zz;
}
}
//删除类
class delete {
private Connection con;
private String url;
private PreparedStatement pstmt;
private String sql,sql1,zz;
private ResultSet rs;
delete() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException ce) {
System.out.println(ce);
}
url = "jdbc:odbc:test";
}
public String jdelete(String str1) {
try {
con = DriverManager.getConnection(url);
sql = "delete 字典 WHERE 单词=?";
pstmt= con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
pstmt.setString(1,str1);
pstmt.executeUpdate();
Statement s = con.createStatement();
sql1 = "SELECT * FROM 字典 ";
rs = s.executeQuery(sql1);
while (rs.next()) {
System.out.print(rs.getString(1));
System.out.print(rs.getString(2));
System.out.println(" ");
}
rs.close();
pstmt.close();
con.close();
} catch (SQLException ce) {
System.out.println(ce);}
return zz;
}
}
还有个数据库,如果你能留个邮箱,我把整份程序传给你~希望能帮到你
说先说:你的代码有错误,在最下面,我已经该过了,不是大问题。
如果你想学好java的话,可以根据这个代码加上我的注解去理解,但不要学这个代码的变成方式或者说变成习惯,这个代码基本上无误,但犯了一些常识性问题,如果养成了这些不好的习惯对以后的编程会有坏的影响。
我是英文学的java,所以有些注解可能不通顺,但我尽力而为了。 有的注解有点长,所以你复制到编译器后稍微编辑一下就可以运行。代码是可以运行,没有问题的。
------------------------------------
import javax.swing.*; //用来创建图形界面,如窗口,表格,按钮等。
import java.awt.*; //作用同上,但已经很少用,能用swing的地方就不要用awt
import java.awt.event.*;//事件管理和控制
import java.sql.*; //数据库语句和操作
import java.lang.System;//这个不知道
/*下面的这6个没有用,纯属写出来吓人*/
import javax.swing.tree.*;
import javax.swing.event.*;
import java.util.*;
import javax.swing.border.*;
import javax.swing.table.*;
import java.lang.String.*;
class Mywindow extends JFrame implements ActionListener//这个类implements actionlistener,意思就是它自己就可以执行actionListener的任务
{
JTextField txf=new JTextField(20); //建一个文字编辑框,长度20(只可以输入一行文字)
JTextArea jt=new JTextArea(10,30);//建一个文字编辑区域,长10宽30(可以回车然后输入多行文字)
JButton btn1=new JButton("查询");//建一个 查询 按钮
Mywindow()//构造函数,每个类必有的,可以为空
{
JFrame frm=new JFrame("Search");//建一个窗口(让其他的东西有地方可放,和容器一样。是3个最高级别的容器之一,其他两个是applet和window)
frm.setBounds(400,300,450,350);//设置大小和位置,前两个是坐标,后两个是大小
Container con=getContentPane();//建一个awt容器对象,用来添加其他元素,最好用这个添加元素。像:frm.add(all); 可以写成 con.add(all);
JPanel pnl4=new JPanel();//建一个面板用来添加其他元素(第二级别容器,最后需要被添加在frame上)
pnl4.setBorder(BorderFactory.createTitledBorder("Search"));//设置边框样式
pnl4.add(txf);//把文字编辑框添加到面板上
pnl4.add(btn1);//把按钮添加到面板上
btn1.addActionListener(this);//添加事件行为监听器(this),this意思是当前对象,呼应 implements ActionListener
JPanel pnl5=new JPanel();//同上
pnl5.setBorder(BorderFactory.createTitledBorder("Result"));//同上
jt.setWrapStyleWord(true);//这个忘了
jt.setLineWrap(true);//在区域规定的宽度下,如果文字的输入到一行最后则会自动令其一行继续,如果是(false),文字输入就会在这一行继续知道回车
pnl5.add(new JScrollPane(jt));//个这个面板添加右侧滚动条,当文字输入超过 长* 宽后 滚动条出现
JPanel all=new JPanel();//同上
all.setLayout(new BorderLayout());//设置布局,borderlayout()分东西南北(上下左右)中五个部分 无论窗口多大,中间占得面积最大
all.add(pnl4,BorderLayout.NORTH);//添加一个面板在上面
all.add(pnl5,BorderLayout.CENTER);//添加一个在中间
frm.add(all);//把最大的这个面板添加到窗口上 也可以用con.add(all);
frm.setVisible(true);//设置窗口显示属性 如果false就是不显示
frm.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});//加一个窗口监听 如果点小红叉关闭窗口则系统推出
}
public void actionPerformed(ActionEvent e)//作为ActionListener类的构造函数,如果你的class implements ActionListenser, 那就必须得有这个,也可以单独写一个class,不过有点麻烦
{
if(e.getSource()==btn1)//当按钮被点击的时候
{
String str="";//建一个字符串
String tmp=this.txf.getText();//同上,这个字符串的值是当前对象(窗口)中,文本框输入的值
for(int k=0;ktmp.length();k++)//建一个 永久循环
str+=tmp.charAt(k)+"%";//把 % 插入每一个字符后面, 作用后面说
String sql=null;//同上
Statement stmt=null;//定义一个stmt,用来建数据库连接的
sql="select * from chinese where charsound like'"+str+"'";//创建一个sql数据库语句,但它本身还是一个字符串
System.out.println(sql);//系统显示创建的语句,通常找错时候用的
try{//try 和 catch 的作用一句两句说不清楚 不知道你就自己查查
Class.forName("com.mysql.jdbc.Driver");//或者:Class.forName("org.gjt.mm.mysql.Driver");关联mysql数据库驱动
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/japan?user=rootpassword=sa");//建立连接,数据库名japan(为什么不是chinese?)用户名root密码sa
stmt=conn.createStatement();//建立statement对象,用来发送sql语句到数据库
ResultSet rs=stmt.executeQuery(sql);//运行语句并建立一个查询结果的集合
System.out.println("\n------------------------search :"+str+"-------------------------------");//同上
jt.setText("");//清空文本编辑区域
while(rs.next())//while循环,当还有结果的时候,把所有查询结果添加加到文本编辑区域中
{
jt.append(new String(rs.getString("charname").getBytes("iso-8859-1"),"gb2312")+"\t");
System.out.print(new String(rs.getString("charname").getBytes("iso-8859-1"),"gb2312")+"\t");
}
stmt.close();//关闭关连,很重要。
}
catch(Exception eq){System.out.println("error");}
//--------------------------------------------------------------end btn1-------
}
}
public static void main(String args[])
{
Mywindow win=new Mywindow();//建立一个 mywindow 对象
win.pack();//将所有元素整合
win.show();
}
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流