2012-03-03 10 views
0

私はJavaを初めて使用しているので、Javaの基本的なことについていくつかの助けが必要です。 私には2つの質問があります。彼らは非常に単純かもしれません(少なくともC++ではありますが)私はJavaでそれを行う方法を理解できませんでした。Inputstream java

(i)コンマ区切りの値で行を分割するにはどうすればよいですか?

私は次のように入力(テキスト)を提出しているとします(ⅱ)を呼び出す私は、ファイルからの行で入力行を読み込み、各行

ためのカンマの間に文字列を取得したい

zoo,name,cszoo,address,miami 

    ...,...,...,.... 

サブクラスコンストラクタ

私には、Animalというスーパークラスと、DogとCatというサブクラスがあります。私はそれらを入力から読んでいる間、動物としてのベクターに入れました。しかし、私はそのコンストラクタをDogまたはCatのように呼び出す必要があります。どのように私はJavaでそれを行うのですか?

+0

あなたは試してみましたが、それについて何が機能していませんか?これまで試みたことのコードを表示してください。 –

+0

私は何も入力ストリームで何もできませんでした – user1133409

+0

これを宿題としてタグ付けすることを忘れないでください – Kevin

答えて

1
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
// or, to read from a file, do: 
// BufferedReader br = new BufferedReader(new FileReader("file.txt")); 
String line; 
while ((line = br.readLine()) != null) { 
    String[] a = line.split(","); 

    // do whatever you want here 
    // assuming the first element in your array is the class name, you can do this: 
    Animal animal = Class.forName(a[0]).newInstance(); 

    // the problem is that that calls the zero arg constructor. But I'll 
    // leave it up to you to figure out how to find the two arg matching 
    // constructor and call that instead (hint: Class.getConstructor(Class[] argTypes)) 
} 
+0

私はキャッチを実装して部分を試しますか?また、私がここで理解していないことは(動物園、12、ララ).zooです私のクラス名、lalaと12属性です。ここであなたが欲しいものを何でも定義します。 – user1133409

+0

全体を試してみてください。私は、ファイルが見つからないという唯一の例外があると推測しています。とにかくそれについてはあまりできません。 – Kevin

+0

オブジェクトをインスタンス化するためにリフレクションを使用することができます。そして、あなたの入力argsに一致するオーバーロードを提供するためにコンストラクタに頼ります。 – Kevin

0

FileReaderと組み合わせてBufferedReaderを使用してファイルから読み込みます。

BufferedReader reader = new BufferedReader(new FileReader("yourfile.txt")); 

for (String line = reader.readLine(); line != null; line = reader.readLine()) 
{ 
    // handle your line here: 
    // split the line on comma, the split method returns an array of strings 
    String[] parts = line.split(","); 
} 

考えられるのは、バッファ付きリーダーが基本リーダーを囲むことです。バッファ付きリーダーは、物事をスピードアップするバッファーを使用します。バッファされたリーダーは、実際にはファイルを読み取っていません。それを読み取る基本的なFileReaderですが、バッファリングされたリーダーはこれを「裏口」で行います。

別の、より頻繁に見られるのコードスニペットは、このですが、理解することがより困難になる場合があります

String line = null; 
while ((line = reader.readLine()) != null) 
{ 

} 
+0

キャッチを実装して部分を試すべきですか?また、私がここで理解していないのは(動物園、12、ララ).zooは私のクラス名で、lalaと12は属性です。ここであなたが好きなものを定義します。 – user1133409