使用BufferedReader调用方法

时间:2014-03-13 15:57:43

标签: java class methods bufferedreader

所以我有这个方法来读取我的主类中的文件,它完全正常

reader = new BufferedReader(new FileReader("how.txt"));
    List<String> lines = new ArrayList<String>();
    String line = reader.readLine();
    while( line != null ){
        lines.add(line);
        line = reader.readLine();
    }
    //Choose a random one from the list
    Random r = new Random();
    String randString=lines.get(r.nextInt(lines.size()));
    System.out.println(randString);

现在,问题是,我需要在主类中多次使用此方法,并且我想为此方法创建一个类,以便我不必为不同的文件复制和粘贴整个方法我想读。我试图创建这个类:

public class reader {

public static String readfile (String file) throws IOException{
    BufferedReader reader = new BufferedReader(new FileReader("file"));
    List<String> lines = new ArrayList<String>();
    String line = reader.readLine();
    while( line != null ){
        lines.add(line);
        line = reader.readLine();
    }
    //Choose a random one from the list
    Random r = new Random();
    String randString=lines.get(r.nextInt(lines.size()));
    System.out.println(randString);

    return file;
}

}

但是当我在主类中调用这样的方法时:

String randString = reader.readfile("file.txt");

它给我一个错误,说明为bufferedReader类型未定义方法“reafile(String)”。

那么我该如何解决这个问题呢?或者如何在不同的类中创建方法并在主类中调用它? 谢谢:))

5 个答案:

答案 0 :(得分:0)

您的读者对象都称为reader。将您的课程重命名为MyReader之类的内容会更好。 由于此命名冲突,某些行被错误地解释。您想要的是MyReader.readfile(file);,以及您的计划看到的是BufferedReader.readfile(file);,因为您某处有reader BufferedReader类型的对象

答案 1 :(得分:0)

似乎您的reader(对象)不是类型reader(类),而是类型BufferedReader(另一个类)。这是你需要清理的。我建议你稍微重命名你的类/对象。它看起来有点乱。

答案 2 :(得分:0)

大概是你的'读者'对象

String randString = reader.readfile(“file.txt”);

不是指你的类'读者',而是你的代码中可能会声明一些名为'bufferedReader'类型的'reader'的变量。

答案 3 :(得分:0)

该行

BufferedReader reader = new BufferedReader(new FileReader("file"));

应该是

BufferedReader reader = new BufferedReader(new FileReader(file));

您没有使用输入参数。

答案 4 :(得分:0)

编辑:我意识到你的错误!!!

阅读本文并考虑一下。

FileReader是连接到文本文件的字符连接流。您需要创建一个文件。除非提示用户并将其提供给FileReader对象,否则字符串不会删除它。

一个好的开始是:

   import java.io.*;
    class ReadAFile { 
        public static void main(String[] args){
            Scanner in = new Scanner(System.in);
            System.out.println("ENTER FILE NAME");
            String fileName = in.nextLine();
            try{

                File myFile = new File(fileName);
                FileReader fileReader = new FileReader(myFile);
                BufferedReader reader = new BufferedReader(fileReader); 
                /* WE CHAINED THE FileReader to a BufferedReader;*/
                //additional operations
             }catch(exception ex){
                 ex.printStackTrace();
             }
    }

如果您愿意,可以将其他所有内容都放在其他类别中。 JUST MAKE SKE你确定了类Name的大写。为了避免混淆,我会将它命名为不同的东西。也许尝试LoadFile并在其中创建一个loadFile方法。

与此相关的内容

然后您需要做的就是传入一个文件。一旦传入你可能想要返回文件中的行?我可以帮助解决任何其他问题