Java成语接龙
今天花了两个小时做了面向对象老师布置的大(小)作业
~~成语接龙
-
首先要连接数据库,这是模板:
`public class mysql {
public static void main(String[] args) {
//声明Connection对象
Connection con;
//驱动程序名
String driver = “com.mysql.jdbc.Driver”;
//URL指向要访问的数据库名mydata
String url = “jdbc:mysql://localhost:3306/test”;
//MySQL配置时的用户名
String user = “root”;
//MySQL配置时的密码
String password = “123456”;
//遍历查询结果集
try {
//加载驱动程序
Class.forName(driver);
//1.getConnection()方法,连接MySQL数据库!!
con = DriverManager.getConnection(url,user,password);
if(!con.isClosed())
System.out.println(“Succeeded connecting to the Database!”);
//2.创建statement类对象,用来执行SQL语句!!
Statement statement = con.createStatement();
//要执行的SQL语句
String sql = “select * from chengyu”;
//3.ResultSet类,用来存放获取的结果集!!
ResultSet rs = statement.executeQuery(sql);
System.out.println(“—————–“);
System.out.println(“执行结果如下所示:”);
System.out.println(“—————–“);
System.out.println(“序号” + “\t” + “成语”);
System.out.println(“—————–“);String name = null; String id = null; while(rs.next()){ //获取stuname这列数据 id = rs.getString("id"); //获取stuid这列数据 name = rs.getString("name"); //输出结果 System.out.println(id + "\t" + name); } rs.close(); con.close(); } catch(ClassNotFoundException e) { //数据库驱动类异常处理 System.out.println("Sorry,can`t find the Driver!"); e.printStackTrace(); } catch(SQLException e) { //数据库连接失败异常处理 e.printStackTrace(); }catch (Exception e) { // TODO: handle exception e.printStackTrace(); }finally{ System.out.println("数据库数据成功获取!!"); }
}
}`
这个是一个模板,要注意的点后续再说。
2.主要模块部分的代码:
System.out.println("请输入一个四字成语:");
String str1 = scan.nextLine();
if(str1.length()>4)
{
System.out.print("格式错误!");
}
int k;
int j=0;
for(k=0;k<cy.length;k++)
{
for(i=0;i<15000;i++)
{
if(str1.substring(3,4).equals(cy[i].substring(0,1))&&IsInArray(nid,idnum[i])==false)
{
str1= cy[i];
nid[j] = idnum[i];
j++;
System.out.println(idnum[i]+" "+cy[i]);
break;
}
}
}
当然还得自己写个函数用来判断:
public static boolean IsInArray(String[] strs,String s) {
int i = strs.length;
for(int k=0;k<i;k++)
{
if(strs[k]==s)
{
return true;
}
}
return false;
}
有以下注意点是我在写代码时没注意的:
1.连接数据库的时候一般报错原因是在url上,那个时区可能会报错
String url = "jdbc:mysql://localhost:3306/mysql?serverTimezone=UTC";
2.select的时候直接写表名就好了,而且建议名字不要重复(这个稍微注意一下就好了)
String sql = "select * from cy";
3.IsInArray函数是用来避免重复循环的
4.好像用递归可以更快一点,我也没试过,但是原理应该差不多
5.最后总有空指针报错(我还没解决,希望大佬能教一下怎么修改)但是不影响输出结果。
6.还有一些try,catch就不贴了吧
接下来贴运行结果图片: