所以我有这个方法来读取我的主类中的文件,它完全正常
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)”。
那么我该如何解决这个问题呢?或者如何在不同的类中创建方法并在主类中调用它? 谢谢:))
答案 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方法。
与此相关的内容
然后您需要做的就是传入一个文件。一旦传入你可能想要返回文件中的行?我可以帮助解决任何其他问题