private static void readTextFile() throws Exception{ String filename = "d:/tomxd/BookDao.java"; findBookDao findBookDao = new findBookDao(); List<String> lines = findBookDao.readTextFile(filename); int pageSize = 10; int pageNum = 1; int totalPages = (int) Math.ceil(lines.size() * 1 / pageSize); while (true) { System.out.println("第 " + pageNum + " 页,共 " + totalPages + " 页"); int start = (pageNum - 1) * pageSize; int end = Math.min(start + pageSize, lines.size()); for (int i = start; i < end; i++) { System.out.println(lines.get(i)); } int choice = Tool.getInt("请输入选项:0.退出 1.首页 4.上一页 5.下一页 9.尾页"); if (choice == 0) { break; } if (choice == 1) { pageNum = 1; } if (choice == 4) { pageNum = Math.max(pageNum - 1, 1); } if (choice == 5) { pageNum = Math.min(pageNum + 1, totalPages); } if (choice == 9) { pageNum = totalPages; } } }解释一下这段代码块
时间: 2023-06-15 16:08:01 浏览: 43
这段代码是一个用于分页显示文本文件内容的程序。程序首先读取指定文件(这里是"d:/tomxd/BookDao.java")的所有行,然后每页显示指定的行数(这里是10行),并且可以根据用户输入选择不同的操作,比如翻页、返回首页等。
具体来说,程序通过Math.ceil()方法计算出总页数,然后进入一个循环,每次输出当前页的内容,并等待用户输入操作。如果用户输入0,则跳出循环退出程序;如果输入1,则返回第一页;如果输入4,则显示上一页;如果输入5,则显示下一页;如果输入9,则跳转到最后一页。其中,pageNum表示当前页码,totalPages表示总页数。
相关问题
java 获取“http://192.168.1.120:8081/as/qwe/er?a=1”中请求地址
您可以使用Java中的URL类来解析URL并获取请求地址。以下是一个示例代码:
```java
import java.net.URL;
public class UrlParser {
public static void main(String[] args) throws Exception {
String urlStr = "http://192.168.1.120:8081/as/qwe/er?a=1";
URL url = new URL(urlStr);
String path = url.getPath();
System.out.println("请求地址为:" + path);
}
}
```
上述代码将输出:
```
请求地址为:/as/qwe/er
```
其中,`getPath()`方法返回URL的路径部分,即请求地址。
用java对 https://www.3839.com/a/90818.htm 网址写一个爬取评论的爬虫
好的,下面是一个简单的爬取评论的示例代码:
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CommentCrawler {
public static void main(String[] args) throws Exception {
String urlString = "https://www.3839.com/a/90818.htm";
String html = getUrlHtml(urlString);
String commentUrl = getCommentUrl(html);
String commentHtml = getUrlHtml(commentUrl);
String commentText = getCommentText(commentHtml);
System.out.println(commentText);
}
/**
* 获取网页的HTML代码
*/
public static String getUrlHtml(String urlString) throws Exception {
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
StringBuilder builder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
reader.close();
return builder.toString();
}
/**
* 获取评论的URL
*/
public static String getCommentUrl(String html) {
String regex = "<a href=\"(/ajax/.*?\\.html\\?id=\\d+)\">评论";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(html);
if (matcher.find()) {
return "https://www.3839.com" + matcher.group(1);
} else {
return "";
}
}
/**
* 获取评论的文本
*/
public static String getCommentText(String html) {
String regex = "<p class=\"text\">(.*?)</p>";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(html);
StringBuilder builder = new StringBuilder();
while (matcher.find()) {
String comment = matcher.group(1);
comment = comment.replaceAll("<.*?>", ""); // 去除HTML标签
comment = comment.replaceAll(" ", " "); // 替换空格
builder.append(comment).append("\n");
}
return builder.toString();
}
}
```
这段代码实现了以下功能:
1. 通过 `getUrlHtml()` 方法获取网页的 HTML 代码;
2. 通过 `getCommentUrl()` 方法从 HTML 代码中提取评论的URL;
3. 通过 `getUrlHtml()` 方法获取评论页面的 HTML 代码;
4. 通过 `getCommentText()` 方法从评论页面中提取评论文本,并且去掉 HTML 标签和替换空格。
注意:由于该网站使用了反爬机制,因此不能频繁地访问同一个页面,否则会被封 IP。建议设置适当的访问间隔,或者使用代理 IP。另外,使用爬虫需要遵守相关法律法规,不得用于非法用途。