2016-12-14 7 views
1

どのようにファイルからすべてのバイヤーを読むことができ、すべてのバイヤーを配列リストに保管できますか?これどうやってするの?私はバイヤーのarraylistを持っていて、各バイヤーは名前と価格を持っていた

public ArrayList<Bidder> ListOfBidder = new ArrayList<Bidder>(); 
File Bidder =new File("E:\\Bidder.txt"); 
public void getListFromFille() throws FileNotFoundException, IOException{ 
    Scanner in = new Scanner(Bidder); 
    Bidder b=new Bidder(); 
    while(in.hasNextLine()) 
    { 
     b.BName=in.nextLine(); 
     b.BPrice=in.nextInt(); 
     ListOfBidder.add(b); 
    } 

    in.close(); 
} 

それは私に、このエラーを与える:あなたのクラスBidderSerializableを実装している場合Exception in thread "main" java.util.InputMismatchException

+1

エラーの内容を調べましたか?エラーは「取得されたトークンが予想されるタイプのパターンと一致しないか、またはトークンが予想されるタイプの範囲外であることを示すためにスキャナによってスローされる」と表示されます。 – KyleKW

答えて

0

、あなたは、ファイルへのBidderまたはArrayList<Bidder>を保存するためにObjectOutputStreamを使用することができます。その後、それらのオブジェクトを読み込む準備ができたら、ObjectInputStreamを使ってそれらをオブジェクトに読み戻すことができます。

class Bidder implements Serializable{ 
    //class code 
} 

ArrayList<Bidder>を保存し、ここで

void saveBidders(ArrayList<Bidder> bidders, String file) throws IOException{ 

    ObjectOutputStream oos = new ObjectOutputStream(new File(file)); 
    oos.writeObject(bidders); 
    oos.close(); 
} 

ArrayList<Bidder> getBidders(String file) throws IOException{ 

    ObjectInputStream ois = new ObjectInputStream(new File(file)); 
    ArrayList<Bidder> bidders = (ArrayList<Bidder>) ois.readObject(); 
    ois.close(); 
    return bidders; 
} 

に戻ってそれを読むためにこれらのメソッドを使用していくつかのドキュメントです:

Serializiable http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html

ObjectOutputStream https://docs.oracle.com/javase/7/docs/api/java/io/ObjectOutputStream.html

ObjectInputStreamhttps://docs.oracle.com/javase/7/docs/api/java/io/ObjectInputStream.html

+0

このソリューションはあなたの問題を解決しましたか? – CraigR8806

+0

いいえ試しましたが問題は解決しませんでした –

+0

入札者情報はどのようにファイルに入れられていますか?手動で追加していますか?または上記のsaveBiddersメソッドを使用していますか? – CraigR8806

0

この例外は通常予想されるタイプのパターンと一致、またはトークンが予想される型の範囲外であるとしないトークンを取得することを示すために、スキャナによってスローされます。

試してみてください!

Scanner in = new Scanner(Bidder); 
Bidder b=new Bidder(); 
while(in.hasNextLine()) 
{ 
b.BName=in.next(); 
in.nextLine(); 
b.BPrice=in.nextInt(); 
ListOfBidder.add(b); 
} 
+0

しかし、私はすべての入札者を得ることができませんか? –

関連する問題