JavaのXMLDecoderのArrayListのとは、ArrayIndexOutOfBoundsExceptionにファイルを読み込みます

Anj26Pro:

一日良い、イムのArrayListにそれを置き、それぞれの名前を表示するXMLファイルを読み込むプログラムを作成しようとしています。出力は、どのようにファイル内のオブジェクトを読んでください表示されて何名空白がないときにその文字列とどのように私は配列へのXMLの名前を得ることができますか?

import java.beans.*;
import java.io.*;
import javax.swing.JOptionPane;
import java.util.*;
import java.lang.ArrayIndexOutOfBoundsException;
public class ReadNamesFromXML
{
    public static void main(String[] args)
    {


        try {
            XMLDecoder decoder = new XMLDecoder(new
                    FileInputStream("lab10.xml")); 

            ArrayList<String> names = new ArrayList<>(); 
            System.out.println(names); 
        }
        catch (FileNotFoundException e){
            JOptionPane.showMessageDialog(null,"Not found"); 
        }
        catch(ArrayIndexOutOfBoundsException e){
            JOptionPane.showMessageDialog(null,"Not found"); 
        }
    }
}

XMLファイル:

<java version="1.8.0_144" class="java.beans.XMLDecoder">
<string>Harry</string>
<string>Ron</string>
<string>Hermione</string>
<string>Luna</string>
<string>Draco</string>
<string>Neville</string>
<string>Seamus</string>
<string>Ginny</string>
<string>Fred</string>
<string>George</string>
</java>
モンキー:

あなたの質問の説明が言うので、「出力が空白になっている」リストに出力を得るために、あなたのコード内の変更次の操作を行う必要があります。

  1. あなたは使用してXMLファイルからデータを読み取る必要があるdecoder.readObject();、これは型がにキャストして、あなたのオブジェクトを返します、Stringそしてあなたに追加しますArrayList
  2. ときにdecoder.readObject();読んでにすべてを追加することで行われArrayList、それがスローされますArrayIndexOutOfBoundsExceptionへのメッセージが変化し、「すべてのリストに追加」の代わりに「見つかりません」、と言う[OK]をクリックした後、[OK]を、それはすべての名前をコンソール上で、あなたのリストを印刷します。
  3. また、すべてあなたを閉じることをお勧めしstreamsますが、使用することができ、そのためにあなたのプログラムは、終了したらfinallyブロックを。

    public static void main(String... args) {
    
        XMLDecoder decoder = null;
        ArrayList<String> names = null;
        String s = null;
        try {
            decoder = new XMLDecoder(new
                    FileInputStream("lab10.xml")); 
            names = new ArrayList<>(); 
            do {
                 s = (String)decoder.readObject();
                 names.add(s);
            } while(null != s);
        }
        catch (FileNotFoundException e){
            JOptionPane.showMessageDialog(null,"Not found"); 
        }catch(ArrayIndexOutOfBoundsException e){
            JOptionPane.showMessageDialog(null,"All added to list"); 
        }
        finally {
            System.out.println(names); 
            decoder.close();
        }
    }
    

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=338564&siteId=1