Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可以读取.txt文件中字母的代码_Java_Text Files_Bufferedreader_Filereader - Fatal编程技术网

Java 可以读取.txt文件中字母的代码

Java 可以读取.txt文件中字母的代码,java,text-files,bufferedreader,filereader,Java,Text Files,Bufferedreader,Filereader,我正在编写一个程序,它应该读取一个简单的文本文件,并输出该.txt文件中所有字母的列表,按最常用字母到最不常用字母的顺序排列 我已经完成了一个Java程序的编码,该程序要求输入文件名并输出文件中的文本。但我不确定如何输出一系列信件。我不确定的是,在reader类中,我可以使用哪些方法(如果有的话)来读取.txt文件中的每个字母。任何帮助都将不胜感激 这是当前代码: // Here I import the Bufered Reader and file reader Libraries // T

我正在编写一个程序,它应该读取一个简单的文本文件,并输出该.txt文件中所有字母的列表,按最常用字母到最不常用字母的顺序排列

我已经完成了一个Java程序的编码,该程序要求输入文件名并输出文件中的文本。但我不确定如何输出一系列信件。我不确定的是,在reader类中,我可以使用哪些方法(如果有的话)来读取.txt文件中的每个字母。任何帮助都将不胜感激

这是当前代码:

// Here I import the Bufered Reader and file reader Libraries
// The Buffered Reader library is similar to Scanner Library and 
// is used here to read from a text file. File reader will allow
// the program to access windows file system, get the text file
// and allow the Buufered Reader to read it in.
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Scanner;

public class TextFileReaderApp
{
    // I added "throws exception" in case there is an an error in the
    // main method, throw an exception, so it can prevent further
    // errors from occuring if java doesnt know the main methods going
    // to throw an error.
    public static void main(String[] args) throws Exception
    {
        // below I diplay a welcome messgae to the user
        System.out.println();
        System.out.println("Welcome to the Text File Reader application!");
        System.out.println();

        // Below I create an instance of the Scanner class to get
        // input from the user.
        Scanner userInput = new Scanner(System.in);
        String selection = "y"; //this is the string variable that's used in
                                //the while loop to continue the program.

        // Below I created a while loop that continues the program if the user
        // keeps selecting y as their selecion
        while (selection.equalsIgnoreCase("y"))
        {
            // this line of code is supposed to ask the user for text file name under
            // the C:/ directory and must not be hidden in any foler.
            System.out.print("Please enter the name of the .txt file: C/");
            FileReader file = new FileReader("C:/" + userInput.next());

            // file object is used as a parameter in buffered reader.
            BufferedReader textReader = new BufferedReader(file);

            // below I create and initialize an object of type string called text that will
            // store whats inside of the text file.
            String text = "";

            // I use the readLine statement to read line after line of the text.
            // Once it has read everything it will return null.
            String lineText = textReader.readLine();

            // code below is a test for me to see if the code above works and is able to read
            // the text inside the file and output it.
            while(lineText != null)
            {
                // this reads the text line for line and ads it to the text variable for output.
                text = text + lineText + "\n";
                lineText = textReader.readLine();
            }
            System.out.println(text);
        }
        // These 3 code lines ask the user if he/she would like to continue with the program.
        System.out.println();
        System.out.print("Continue using the Text File Reader? (y/n): ");
        choice = user_input.next();
        System.out.println();
    }
}

如果你需要数一数字母/字符,你也可以数一数行/词等。这里不需要读者参与

 for (char c : someString.toCharArray ()) {
     // handle the character
  }

一旦您从文件中获得任何字符串,就应该可以工作。

首先,您可能希望使用StringBuilder而不是字符串文本,因为它具有更好的性能。 “text=text+lineText”将在每次执行时创建另一个字符串对象,StringBuilder在这种情况下工作得更好)

实现所需的一种方法是逐字符读取文本行中的字符,使用包含所有字母的switchcase块,并在出现整数时将它们添加到包含整数的数组中。例如:

int[] array = new int[26];
switch(character){
case "a": 
    array[0] += 1;
    break;
case "b": 
    array[1] += 1;
    break;
//....
}
等等。。。
最后,使用一个简单的for循环并打印数组的值。现在您可以看到输入哪个字符的次数。

这将读取
文本阅读器中的所有字符,直到达到EOF或出现异常为止

试试看{
对于(int i=textReader.read();i!=-1/*EOF*/;i=textReader.read()){
char c=(char)i;
//你想怎么做就怎么做
}
}捕获(IOException)
textReader.close();

您需要阅读java中Reader类的javadoc。这是一系列要求我们为您编写代码的语句,不是一个实际问题。不,我不希望有人为我编写代码,但我只想知道Reader类中可以读取文本中单词字母的方法。我可以处理除此之外的所有事情,但我只是想澄清一下。您不想使用
textReader.read()
,请参阅我的答案以获取示例:)希望有帮助,如果您需要澄清其他内容,请直接写下来。谢谢您的输入!因此,根据我的理解,我必须为每个字母编写代码,使数组元素的计数增加一个?我可以创建一个包含26个元素的数组,每次读取一个字符时,只需将某个元素增加1。但有一个问题,我是否可以使用if/else if语句而不是switchcase块?我不太熟悉使用switchcase块,我对java还是相当陌生的。是的,这是我的建议。当然,您也可以使用if/else块,但使用switch/case看起来更干净,更易于阅读。您可能需要查看此页面: