gpt4 book ai didi

java - 使用缓冲读取器时出错

转载 作者:行者123 更新时间:2023-12-02 07:14:54 25 4
gpt4 key购买 nike

我编写了以下代码来计算文件中的行数、字符数和单词数。我用过BufferedReader。

import java.io.*;

class FileCount
{


public static void main(String args[]) throws Exception
{
FileInputStream file=new FileInputStream("sample.txt");
BufferedReader br=new BufferedReader(new InputStreamReader(file));
int i;
int countw=0,countl=0,countc=0;
do
{
i=file.read();
if((char)i==("\t"))
countw++;
else if((char)i=="\n")
countl++;
else
countc++;



}while(i!=-1);
System.out.println("Number of words"+countw);
System.out.println("Number of lines"+countw);
System.out.println("Number of characters"+countc);
}
}

问题是我只能使用缓冲读取器。我知道我们无法比较我在代码中所做的 char 和 String 。这段代码还有其他方法吗?

最佳答案

首先,您需要实际从 BufferedReader 中读取数据 - 但正如上面所提供的,您实际上忽略了您甚至拥有这个。您需要执行 br.read(),而不是 file.read()

您可能已经通过当前方法观察到的部分问题是,在附加 BufferedReader 后,直接从 file 读取时可能会丢失字符。它。 BufferedReader 可能会从流中预读取字符来填充缓冲区 - 因此直接从 file 读取将导致丢失这些字符。

那么,你是对的,你不能与字符和字符串进行比较 - 所以与字符进行比较:

if((char)i == ('\t'))
countw++;
else if((char)i == '\n')
countl++;

一旦您解决了这些问题,我希望您会发现其他问题 - 但希望这足以让您开始。 (例如,您的单词确实是用制表符分隔的 - 还是您想要查找空格等?)

关于java - 使用缓冲读取器时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15055732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com