使用jsp实现成语接龙
程序员文章站
2022-03-21 16:27:55
...
引子
成语接龙条件
设计和代码分析
引子:
我们在学习生活中总会遇到成语接龙,那么如果让你编写程序他又该如何实现呢,让我们快一起进行研究总结,将学到的东西学以致用。
成语接龙条件:
1.必须为四字词语
2.如果是第一个成语则可以忽略,否则需要判断该字的第一个词和上个词的最后一个词是否匹配,实现接龙。
3.该篇文章中我创建了一个文件,存放成语里面只有500成语,可以做简单的开发测试,如果要精准则可以在网上下载全部成语将部分代码进行修改。
设计和代码分析:
一共使用两个jsp页面,第一个进行显示和输入成语,另一个则进行判断和传递返回值。
第一个显示页面(idiom.jsp),直接上代码(有不懂的地方可以私信问我哦):
age contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>成语接龙</title>
</head>
<body>
<h1>欢迎来到成语接龙</h1>
<h2>当前的成语进度为:</h2>
<%
String s= (String) session.getAttribute("msg");
if(s!=null){
out.println(s);
}
else {
out.println("暂时没有成语,请进行输入");
}
%>
<br>
<form action="IdiomInformtion.jsp" method="post">
输入成语:<input type="text" name="idioms">
<input type="submit" value="提交">
</form>
</body>
</html>
其页面内容如下:
此时为第一次打开该页面,之前并没有数据的输入,所以没有内容显示。可进行输入提交。
第二个页面:(IdiomInformtion.jsp) 三个判断条件,查询文件是否含有成语,若失败重新输入,成功则三秒后跳转到第一个页面显示迄今为止成语信息。
<%@ page import="java.io.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<html>
<head>
<title>成语接龙信息查看 </title>
</head>
<body>
<%!
String msg="";
%>
<%
request.setCharacterEncoding("utf-8");
String idiom = request.getParameter("idioms");
//判断长度是否合格
if(idiom.length()!=4){
out.println("成语的长度应该为4个字,请重新输入<br>");
out.println("<a href=idiom.jsp>重新输入</a>");
return;
}
//如果不是第一个则需要判断成语是否接龙,是第一个则不需要重新判断
if(!msg.equals("")){
if(msg.charAt(msg.length()-2)!=idiom.charAt(0)){
out.println("请注意成语接龙规则:后一个成语的第一个字必须是前一个成语的最后一个字,请重新输入<br>");
out.println("<a href=idiom.jsp>重新输入</a>");
return;
}
}
//判断是否是成语 在提供的成语库中进行查询 成语不全 可能有遗漏 误伤情况
boolean isIdiom=false;
BufferedReader br=null;
try {
br = new BufferedReader(
new InputStreamReader(new FileInputStream("C:\\Users\\Lenovo\\IdeaProjects\\webDemo\\ServletDemo\\src\\information\\idiom.txt"),"utf-8"));
String connection = br.readLine();
while (connection != null) {
if(connection.contains(idiom)) {
out.println(idiom);
isIdiom = true;
break;
}
connection = br.readLine();
}
}
catch (IOException e){
e.printStackTrace();
}
if(isIdiom==false){
out.println("你输入的不是成语,请重新输入");
out.println("<a href=idiom.jsp>重新输入</a>");
return;
}
msg+=idiom+" ";
session.setAttribute("msg",msg);
out.println("成语已经提交成功,三秒后自动跳转查看成语");
response.setHeader("refresh","3;idiom.jsp");
%>
</body>
</html>
运行结果如下:
case1.输入的字数不等于4位:
点击重新输入则会返回刚才输入页面。
case2.输入的不是成语(即文件中不包含该成语)
case3:
之前有成语了,但该成语的第一个字与上个成语的最后一个字不相同。
case4:
正确输入情况
ps:
上文提到读成语文件,需要大家自行进行创建添加成语,若想简单实现成语接龙,忽略是否为成语,可以忽略此判断条件和内容。
简单的成语接龙就做好啦,大家有什么问题欢迎咨询哦。