当前位置: 首页 > 面试题库 >

读取文本文件并存储每个出现的字符

夏俊人
2023-03-14
问题内容

我想制作一个将读取文本文件并存储每个出现的字符的Java程序。因此它将考虑标点符号,字母,数字,大写,小写等。给定一个文本文件,如:

玫瑰是红色的,

紫罗兰是蓝色的。

打印值将如下所示:

R:1

r:3

我:1

,:1

[ect]

到目前为止,我已经能够读取文件并计算单词,行数和字符数。

package Exercise3;
import java.util.Scanner;
import java.util.StringTokenizer;
import java.io.*;
    public class StringTokenizerDemo1
    {
        public static void main(String[] args) throws IOException
        {
            Scanner keyboard = new Scanner(System.in);
            File file = new File("C://Users//guy//Desktop//Practice.txt");
            Scanner inputFile = new Scanner(file);
            String line, word;
            StringTokenizer token;
            int words = 0; //word count 
            int lines = 0; //line count
            int chars = 0; //char count 
            while (inputFile.hasNext())
            {
                lines++; //add one to line count 
                line = inputFile.nextLine();
                token = new StringTokenizer(line, " ");
                while (token.hasMoreTokens())
                {
                    words++; //add one word count 
                    word = token.nextToken();
                    chars+= word.length(); //add to char count 
                }
            }
        }
    }

我还没有学过哈希图/表或树形图;寻找有关如何使用数组,数组列表或链表存储所有字符类型及其出现的建议。


问题答案:

A char是16位无符号值,如果将其强制转换为int,则将获得0到65535之间的值。这意味着您可以使用数组存储字符:

int[] charCounts = new int[65536];

然后当您想要记录发生的情况时char c

charCounts[(int) c]++;

当您要读取计数时:

for (int i=0; i<65536; i++)
    if (charCounts[i]>0)
        System.out.println((char)(i)+": "+charCounts[i]);

HashMap<Character,Integer>如果您想做一个练习,那么没有什么可以阻止您这样做的,尽管它比它需要的要重得多:

HashMap<Character,Integer> map = new HashMap<Character,Integer>();

以及何时要记录以下事件的发生char c

if (!map.containsKey(c))
    map.put(c,1);
else
    map.put(c,map.get(c)+1);

以及当您想阅读时:

for (Map.Entry<Character,Integer> entry: map.entrySet())    
    System.out.println(entry.getKey()+": "+entry.getValue());

请注意,对于所有这些,我假设您只处理可打印字符。如果没有,您将在打印出来时对此做些事情。



 类似资料:
  • 我想做一个java程序,将读取一个文本文件,并存储每一个单一的字符出现。因此,它将解释标点符号,字母,数字,大写,小写等。给定一个文本文件,如: 打印值将如下所示: R:1 r:3

  • 问题内容: 我们如何从文本文件读取数据并将其存储在String变量中? 是否有可能在方法中传递文件名,并且它将返回字符串,即文件中的文本。 我必须导入哪种工具?声明列表会很棒。 问题答案: 这些是必需的进口: 这是一种方法,通过将文件名作为参数传递给它,您可以从文件中进行读取,如下所示:

  • 问题内容: 我知道如何使用和File IOException 读取文件,但是我唯一不知道的是如何将文本作为数组存储在文件中。 这是我的代码: 这是我的文件包含的内容: 问题答案: 存储为字符串: 对于花车:

  • 问题内容: 有什么方法可以读取文本文件并将内容存储在Jtable中?我有一个文本文件,其中包含有关某些过程的某些信息。就像一个具有列和各自值的表。是否可以获取.txt文件的内容并以Jtable的形式显示?我正在使用Eclipse和Window Builder。任何帮助将不胜感激。谢谢! 问题答案: 我将研究Oracle的教程: 读/写文本文件 JTable教程 当从文本文件中获取数据时,您需要将其

  • 问题内容: 我编写了一个PHP脚本,该脚本贯穿文本文件(实际上是imdb的“列表”文件)并将其存储在本地MySQL数据库中。 由于这些列表文件最大为200MB,因此需要花费大量时间。默认情况下,PHP 设置为30秒。 我将此值设置为300只是为了尝试是否可行。例如,我的“ movies.list”文件约为80MB,并使用此脚本运行了300秒,在数据库中创建了约25000行。这行不通,因为我什至没有

  • 问题内容: 我有一个文件,其内容为python列表的形式,如下所示: 有什么办法可以将python文件读回到列表对象中吗?而不是使用整个文件,而是将其读取为字符串。 编辑:对于那些可能有兴趣的人,我使用(import ast)遇到了一个奇怪的问题,作为解决上述问题的建议。 我在其中使用的程序具有从yahoo finance python模块获取历史股票数据的功能。此函数与ast.literal_e