Java - 我正确地从这个文件中读取文本吗?

时间:2017-05-29 21:15:03

标签: java syntax

如果我正在从这个文件中正确阅读文本,我很好奇。

目的:从文件中读取文本并将其放入名为"行" (该集合是一个LinkedHashSet,因为我应该按照添加的顺序对元素进行排序)。

以下是main()函数的代码(省略了导入):

public class Main {
public static void main(String[] args) {
    try {
        Set<FileExaminer> examiners = new LinkedHashSet<>();
        examiners.add(new FileExaminer("raven.txt"));
        examiners.add(new FileExaminer("jabberwocky.txt"));

        for (FileExaminer fe : examiners) {
            System.out.println("-----------------------");
            fe.display(45);
            System.out.println();
            fe.displayCharCountAlpha();
            fe.displayCharCountNumericDescending();
        }
    }catch(FileNotFoundException e){
        System.out.println(e.getMessage());
    }

}

}

这是LinkedHashSet的创作:

private LinkedHashSet< String > lines = new LinkedHashSet<>();

以下是FileExaminer类中的代码:

public FileExaminer(String filename) throws FileNotFoundException {
    File file = new File(file);

    if(file.exists()){
        Scanner reader = new Scanner(filename);

        /** Read the contents of the file and place them into the lines set */
        while( reader.hasNext() ){
            lines.add( reader.next() );
        } // end of while
        reader.close();
    } // end of if
    else{
        /** Throw exception if the file does not exist */
        throw new FileNotFoundException("File not found: " + filename);
    } // end of else

    /** Call calculateCharCountAlpha */
    calculateCharCountAlpha();
} // end of constructor

我遇到的问题是在程序的输出中。 当我从&#34;线打印出所需的线条时,#34;设置,我得到文件名,当我从其他方法打印出其他集中的项目时,它可以正常工作,但它正在分析文件名,而不是文件中的文本。 我不确定为什么会这样。

我已经在上一个问题中发布了displayCharCountAlpha的代码(它被发现可以正常工作),所以我不会包含它。

displayCharCountAlpha():

public void displayCharCountAlpha(){ // prints out charCountAlpha
    System.out.println(charCountAlpha);
}

displayCharCountNumericDescending():

public void displayCharCountNumericDescending() { // prints out charCountNumericDescending
    System.out.println(charCountNumericDescending);
}

显示():

public void display(int numberOfLines){
    int count = 0; // control-variable that can be checked throughout iteration
    for(String s : lines){
        System.out.println(s);
        count++;

        if(count == numberOfLines-1){ // number of lines insinuates that the loop has the set amount of times
            break; // break out of the loop
        } // end of if
    } // end of for
} // end of Display()

2 个答案:

答案 0 :(得分:1)

简单的错误,

Scanner reader = new Scanner(filename);

应该是

Scanner reader = new Scanner(file);

目前,您已阅读String filename(并希望阅读File file)。

答案 1 :(得分:0)

问题是我正在阅读的文件,而不是我使用的算法。 似乎文本的格式是主要问题。 我把文件作为文件,使用程序将所有文本写入文件,再次使用相同的文件,它工作了! 奇怪的问题,但它是固定的。非常感谢所有帮助过的人!