【问题标题】:Understanding Array<file> in java理解 java 中的 Array<file>
【发布时间】:2015-04-03 20:49:57
【问题描述】:

所以我试图了解 Java 数组中文本文件的数据流。

我对编程比较陌生,我查看了 java 文档,但我有点难以熟悉它们。最终我想找到这个txt文件中字符分布的百分比。

我有一个接收文件并返回数组的方法。我在想我必须以某种方式将文件转换为字符串,然后我可以通过对每个实例进行计数来查看文件字符。从那里我可以根据它们各自出现的频率来计算分布百分比。但是如何将其作为数组返回?

我不确定是否应该使用“文件”数组,或者将文本文件转换为字符串(toString?)将其放入数组中,然后尝试找到一种方法来计算每个实例的每个实例字符。 (A-Z)。

无论如何,了解数组如何看待其内容可能会为我指明解决问题的正确方向。任何帮助将不胜感激。

【问题讨论】:

  • 您到底需要什么?想要将文件的内容存储在 LIST 中?或者你到底需要什么?
  • 您是在学习编程课程还是尝试自学?如果是一门课程,那么您应该检查有关阅读文件的课堂笔记。如果自学,试试Java I/O tutorials。
  • 对不起,我的意思是更清楚。我需要读取一个 txt 文件并按百分比对其字符分布进行排序,即。程序输出最终将是 a: .02%, b: .04% .. 等等。
  • 您可能需要阅读整个文件(如果需要,请在此处搜索一些指针)并使用映射(键 = 字母,值 = 计数)进行计数(这里还有一些问题可能会有所帮助)。见stackoverflow.com/questions/27195070/…

标签: java arrays string file


【解决方案1】:

读取文件并将其转换为字符串

    final String path = "c:\\somefile.txt";
    final byte[] bytes = Files.readAllBytes(Paths.get(path));
    final String fileContents = new String(bytes, Charset.defaultCharset());

然后,您可以处理 fileContents 字符串来计算每个字符的频率,以达到您的字符频率。

你可以参考这个频率部分。 Java: How do I count the number of occurrences of a char in a String?

【讨论】:

  • 这假设您使用的是 Java7 或更高版本。
  • 为什么要在计算其中的字符之前读取整个文件?
  • 帖子的作者说他想计算整个文件的频率。
  • 但是您可以在阅读时计算频率。将整件事留在记忆中是没有意义的。
  • 请随意写下你的答案。
【解决方案2】:

将文件读入二维字符数组,然后在二维数组上应用逻辑以找到分布。

char [] [] buffer = new char [10][10];

Scanner fileScanner = new Scanner(new File("Path to file"));

int lineCount=0;
while (fileScanner.hasNextLine()){
        String line = fileScanner.nextLine();
        System.arraycopy(line.toCharArray(),0,buffer[lineCount++],0,line.length());
}

我刚刚使用长度为 10 的数组,您可以根据输入文件决定大小。

【讨论】:

  • 为什么是二维数组?它有什么用途?
  • 是的,根据需要完成的计算类型,有多种解决方案。如果我们只需要计数,那么 map 就可以了。但是如果他需要找出多行字符位置之间的距离,那么数组应该可以工作。
猜你喜欢
  • 2015-06-04
  • 1970-01-01
  • 1970-01-01
  • 2023-01-25
  • 2014-01-30
  • 2020-03-11
  • 2013-05-17
  • 2017-08-09
  • 1970-01-01
相关资源
最近更新 更多