所以我有一个项目,我必须从.txt文件中读取书籍参考号和书名到一个数组中,然后用户输入一个参考号,用来搜索该书的书数字,所以这就是我所拥有的,请记住我对java不是很有经验
public class Book {
ArrayList<String> books = new ArrayList<String>();
BufferedReader br = null;
{
try {
br = new BufferedReader(new FileReader("BookList.txt"));
String book;
while ((book = br.readLine()) != null) {
books.add(book);
}
} catch (IOException e){
} finally {
try {
br.close();
} catch (IOException ex) {
}
}
String [] bookList = new String[books.size()];
books.toArray(bookList);
}
}
即将文件读入数组列表,然后将数组列表转换为数组 我不是百分百肯定,如果这是正确的,如果这是一个问题,我很乐意采取你的解决方案。
我遇到的问题是当我尝试设置允许用户搜索的方法时
private void FindItActionPerformed(java.awt.event.ActionEvent evt) {
String input;
input = Input.getText();
for(int i=0; i<bookList.length; i++){
}
}
我收到一条错误,说无法找到符号bookList,但我不知道为什么
感谢您提供的任何帮助或建议
答案 0 :(得分:0)
您的初始化代码位于范围括号内,顺便错过了方法声明。
你无法达到bookList,因为它不是类参数,而是在范围内声明。
发布方法声明(在try
上方)并在bookList
变量下添加BufferedReader
声明,而不是在范围内声明。
答案 1 :(得分:0)
您需要将bookList用于所有方法
public class Book {
ArrayList<String> books = new ArrayList<String>();
String[] bookList;
BufferedReader br = null;
// ...
然后你需要将它设置为某种东西。您当前的行books.toArray(bookList);
使用bookList作为toArray的参数来了解它正在生成什么类型的数组,然后它将返回该类型的数组。所以你需要做
this.bookList = books.toArray(bookList);
答案 2 :(得分:0)
您的代码应如下所示:
public class Book {
ArrayList<String> books = new ArrayList<String>();
BufferedReader br = null;
String[] bookList; //difference (bookList is now visible to all methods in class)
{
try {
br = new BufferedReader(new FileReader("BookList.txt"));
String book;
while ((book = br.readLine()) != null) {
books.add(book);
}
} catch (IOException e){
} finally {
try {
br.close();
} catch (IOException ex) {
}
}
bookList = new String[books.size()]; //difference
books.toArray(bookList);
}
}
private void FindItActionPerformed(java.awt.event.ActionEvent evt){
String input;
input = Input.getText();
for(int i=0; i<bookList.length; i++){
//do something...
}
}
代码中的问题是您尝试使用变量bookList
,该变量位于不同的范围内。