将文件读入数组Java

时间:2014-04-23 23:16:30

标签: java

所以我有一个项目,我必须从.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,但我不知道为什么

感谢您提供的任何帮助或建议

3 个答案:

答案 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,该变量位于不同的范围内。