import java.io.File; import java.util.InputMismatchException; import java.util.Scanner; import java.io.PrintWriter; public class Main { public static void main(String[] args)throws InputMismatchException { try {String str; File test = new File("e://test.txt"); System.out.println(test.exists()); Scanner input = new Scanner("e//test.txt"); int l=0; int c=0; int w=0; while ((str=input.nextLine())!=null) { l++; c+=str.length(); } while((str=input.next())!=null){ w++; } System.out.println("文件字符个数为:"+c); System.out.println("文件行数为:"+l); System.out.println("文件单词个数为:"+w); } catch (InputMismatchException exception){ System.out.println("InputMismatchException"); } } }哪里错误
时间: 2024-02-14 12:17:13 浏览: 79
java.util介绍.pdf
4星 · 用户满意度95%
这段代码可能存在以下错误:
1. 在使用 Scanner 类读取文件时,应该传入文件对象而不是文件路径字符串。代码中使用的是 "e//test.txt" 字符串,应该改为 new File("e://test.txt")。
2. 在使用 Scanner 类读取文件时,应该使用 hasNextLine() 和 hasNext() 方法来检查是否还有下一行和下一个单词可读取。代码中使用的是 while 循环来读取文件,这会导致程序进入死循环。
3. 在统计单词个数时,应该使用正则表达式来判断单词的边界,例如 "\\b\\w+\\b" 可以匹配一个或多个字母组成的单词。代码中使用的是 input.next(),这只能读取一个单词,无法正确地统计单词个数。
修正后的代码可能类似于下面这样:
```java
import java.io.File;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
try {
File file = new File("e://test.txt");
System.out.println(file.exists());
Scanner input = new Scanner(file);
int lines = 0;
int chars = 0;
int words = 0;
while (input.hasNextLine()) {
String line = input.nextLine();
lines++;
chars += line.length();
words += line.split("\\b\\w+\\b").length;
}
System.out.println("文件字符个数为:" + chars);
System.out.println("文件行数为:" + lines);
System.out.println("文件单词个数为:" + words);
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
阅读全文