2017-05-24 9 views
-3
try{ 
    DefaultTableModel tm = (DefaultTableModel) jTable1.getModel(); 
    FileInputStream FI = new FileInputStream("C://Users//Dell-Pc//Documents//NetBeansProjects//MyBookShop//src//Layouts//book_store.txt"); 
    DataInputStream DI = new DataInputStream(FI); 
    BufferedReader br= new BufferedReader(new InputStreamReader(DI)); 
    String line=""; 
    while((line=br.readLine()) != null){ 
     Map m1 = new HashMap(); 
     String[] data1=line.split(","); 

      m1.put("ISBN", data1[0]); 
      m1.put("TITLE", data1[1]); 
      m1.put("AUTHOR", data1[2]); 
      m1.put("PRICE", data1[3]); 
      m1.put("NUMBER", data1[4]); 
      //System.out.println(data1[1]); 
      //System.out.println("\t"+m1); 
      Vector v1 = new Vector(); 
      v1.add(m1.get("ISBN")); 
      v1.add(m1.get("TITLE")); 
      v1.add(m1.get("AUTHOR")); 
      v1.add(m1.get("PRICE")); 
      v1.add(m1.get("NUMBER")); 

      tm.addRow(v1); 

     //v.clear(); 
     //tm.setDataVector(data, cols); 

    } 
    }catch(Exception e){ 

// JOptionPane.showMessageDialog(this、e);誰でも私がjava.lang.ArrayIndexOutOfBoundsExceptionを取得している理由を教えてもらえますか?

Logger.getLogger(HomePage.class.getName())。log(Level.SEVERE、null、e); }

+2

読者は気にしません。どのような声明が問題を引き起こしているのかはわかりません。ファイル内のデータがどのようなものかわかりません。問題を示す適切な[mcve]を投稿してください。実際にファイルからデータを読み込む必要がある場合は、そのデータのために 'StringReader'を使います。 – camickr

+0

@camickrによって提案されたMCVEに加えて。 1)「スタックトレースとは何ですか?アプリケーションエラーをデバッグするにはどうしたらいいですか?」(http://stackoverflow.com/q/3988788/418556)2)常にエラーと例外出力をコピー/ペーストしてください! 3)コードとコードスニペット、HTML/XMLや入出力(スタックトレースなど)などの構造化文書にはコードの書式を使用してください。これを行うには、テキストを選択し、メッセージの投稿/編集フォームの上部にある「{}」ボタンをクリックします。 4) 'book_store.txt'を置き換えるためにいくつかのデータをハードコードします。 –

+0

Javaの命名規則に従えば、コードを読みやすくなります。 'java.util.Vector'を使わないでください。それは約19年間時代遅れです。 –

答えて

0

問題は、ラインが正常であることを確認せずに消費していることです。

ファイルの最後に空白行がある場合は、line.split(",")より、その行に[""]と表示されます。インデックスゼロは有効なアクセス(空の文字列)ですが、インデックス1は無効で、すべてがクラッシュします。エラーが発生する可能性があるアクセスを行う前に、データが良好であることを確認する必要があります(少なくともtry-catchでサラウンド)。

関連する問題