编写Java代码实验 2.1:验证 Scanner 类中 next() 和 nextLine() 方法的不同之处 实验 2.2:测试 nextLine() 方法存在的 Bug 及规避方法实验 2.3:从外部文件(txt)读取内容并打印输出
时间: 2024-12-20 22:28:14 浏览: 27
实验 2.1 验证 `Scanner` 类中 `next()` 和 `nextLine()` 方法的区别:
`next()` 方法用于读取输入流中的下一个单词(默认空格分隔),直到遇到空格、制表符、换行符或结束符。如果直接按回车键,它会继续等待下一个单词。例如:
```java
Scanner scanner = new Scanner(System.in);
String word = scanner.next(); // 获取下个单词,如 "Hello"
```
而 `nextLine()` 方法则读取一行文本,包括所有字符直到遇到换行符为止,返回的是包含换行符的字符串。按回车键后,它将获取下一行的内容。
```java
String line = scanner.nextLine(); // 获取整行,如 "Hello\nWorld"
```
实验 2.2 测试 `nextLine()` 方法存在的 Bug 及规避方法:
有时候,如果我们误以为`nextLine()`会像`next()`那样只返回一个单词,可能会导致意外的结果。比如,在用户输入完一行后再按下回车键,程序可能无法正确处理额外的换行符。为了避免这种 bug,应在读取完整行后检查是否还有剩余的换行符,并在需要时移除:
```java
if (line.isEmpty()) {
System.out.println("No input after pressing Enter");
} else {
// Process the line without newline
String trimmedLine = line.trim();
System.out.println(trimmedLine);
}
```
实验 2.3 从外部文件(txt)读取内容并打印输出:
首先,你需要创建一个 `FileReader` 或 `BufferedReader` 对象,然后配合 `Scanner` 使用。下面是一个简单的例子,假设有个名为 "example.txt" 的文件:
```java
import java.io.*;
public class FileReadExample {
public static void main(String[] args) {
try {
FileReader fileReader = new FileReader("example.txt");
BufferedReader bufferedReader = new BufferedReader(fileReader);
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line); // 打印文件中的每一行
}
bufferedReader.close();
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在这个示例中,我们逐行读取文件并将其内容打印出来。注意,每次循环都会跳过文件末尾的换行符。
阅读全文