Java 使用BufferedReader调用方法
所以我有这个方法来读取我的主类中的一个文件,它工作得非常好Java 使用BufferedReader调用方法,java,class,methods,bufferedreader,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 = 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);
它告诉我一个错误,方法“reafile(String)”对于类型BufferedReader是未定义的
那么我该如何解决这个问题呢?或者,如何在不同的类中创建方法并在主类中调用它?
谢谢:)您的类和阅读器对象都称为reader
。最好将类重命名为类似于MyReader
。
由于此命名冲突,某些行的解释不正确。您需要的是
MyReader.readfile(文件)代码>,程序看到的是BufferedReader.readfile(文件)
因为您在某处有一个读取器
类型为BufferedReader的对象,所以您的读取器
(对象)似乎不是读取器
(类)类型,而是BufferedReader
(另一类)类型。这就是你需要清理的。我建议您稍微重命名一下类/对象。就目前的情况来看,这有点混乱 假设您的“reader”对象在
String randString=reader.readfile(“file.txt”)
不是引用类“reader”,而是在代码中声明了一个名为“reader”的变量,类型为“BufferedReader”。行
BufferedReader reader = new BufferedReader(new FileReader("file"));
应该是
BufferedReader reader = new BufferedReader(new FileReader(file));
您没有使用输入参数。编辑:我意识到您的错误
读这篇文章,好好想想
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();
}
}
如果你愿意的话,你可以把这些放在另一个类中。只需确保将类名大写即可。不过为了避免混淆,我会给它起个不同的名字。也许可以尝试LoadFile并在其中创建一个LoadFile方法
类似这样的东西
然后你需要做的就是传入一个文件。一旦传入,您可能希望返回文件中的行?我可以帮助回答任何其他问题一些会影响如何写这篇文章的问题。有多个文件吗?文件是否很长,以至于您不想将其存储在内存中?您是否会对同一个文件多次使用该方法?您是否使用Java 7?如果是,请使用Files.readAllLines()
@fge将其放入何处?您需要将包含该函数的类导入到主类中。仍然会出现相同的错误“reafile(String)”未为类型BufferedReader定义。“如果这是你的错误。你没有像我说的那样调用readfile。检查主方法调用中的拼写你能再解释一下吗?我试图复制并粘贴你写下的代码,但它仍然给我那个错误。是的,问题是你试图读取的是字符串而不是文件。我将在一分钟内提出您需要做的事情。请稍候。您如何调用该方法以在其他类中使用?如果我想使该方法不作为主要方法,该怎么办?我试图使文件读取器位于main方法之外。
BufferedReader reader = new BufferedReader(new FileReader(file));
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();
}
}