我正在学习Java EE,并且正在尝试根据我的代码中列出的选项值扫描多个文本文件。如果选择了三个选项之一,它将扫描相应的文本文件并输出一些信息。
正如你所看到的那样,我让它能够扫描一个文件而显然忽略了选项选择。我不知道如何调整我的代码以根据选择切换到不同的文件。
我想我将不得不移动一些东西,例如在实现选项选择的if语句中移动while循环,然后扫描文件中的id,这应该不是问题。我从阅读不同的txt文件时有点傻眼。
我已在下面发布了我的代码,以便您了解我想要做的事情。
我应该创建多个扫描仪并以这种方式实现它还是应该做其他事情?
编辑:感谢我的一些帮助,我设法让它发挥作用。这是修订后的工作代码。
<body>
<%
String id = request.getParameter("id");
String cid = request.getParameter("classID");
String[] title = {"Name: ", "SSN: ", "Score: "};
Scanner sc;
%>
Find Your Current Score.
<%-- Blank space here --%>
<p></p>
<%-- Input Forms (Text Field and Button) --%>
<form action="ScoreFinder.jsp" method="get">
Employee ID:
<input type="text" name="id"/> Use SSN Format: xxx-xxx-xxxx
<p></p>
Class:
<select name="classID">
<option value="CMIS440">CMIS 440</option>
<option value="CMIS445">CMIS 445</option>
<option value="CMIS485">CMIS 485</option>
</select>
<input type="submit" value="Submit" />
</form>
<%
if (id != null || cid != null) {
String fileName = "/"+cid.replaceAll(" ", "") + ".txt";
sc = new Scanner(new File(application.getRealPath(fileName)));
while(sc.hasNext()) {
String line = sc.nextLine();
String[] split = line.split("[#]");
if (id.length() == 0) {
out.println("Please enter an ID number.");
break;
}
if (line.contains(id)) {
out.println("Class: " + cid);
%><br><%
for (int i=0; i<split.length; i++){
out.println(title[i]);
out.println(split[i]);
%><br><%
}
break;
}
}
}%>
</body>
答案 0 :(得分:1)
假设您列出的JSP名称是ScoreFinder.jsp,并且您要将记录提交到同一个JSP。
您可以从参数id
的值创建文本文件的名称,例如
<body>
<%
String id = request.getParameter("id");
String fileName = "/"+id.replaceAll(" ", "")+".txt"; // avoiding null check of 'id' for simplicity
Scanner sc = new Scanner(new File(application.getRealPath(fileName)));
try {
while(sc.hasNext()) {
........
........