2012-03-07 11 views
0

これは宿題がない、あるいは何もないと言いたいのですが、私はちょうどI/Oでこれらの種類の配列に関する深い知識が必要です。その解けるならば、スキャナで問題に取り組む:Pjava - 独自のクラスを持つ2次元配列にtxtをスキャンする

私のようであるtxtファイルがある場合:

car 1 2 3 4 5 
    boat 1 2 3 4 5 
    plane 1 2 3 4 5 

を、私は抽象的な2Dで新しいの.javaファイルで新しいクラスを作りましたアレイ:

class Type 
    { 
      String type; 
      int number; 
    } 
    public toString() 
    { 
      return String.format("%02d:%02d", type, number); 
    } 

のような外見を得ることが可能です:

car:1 car:2 car:3 
    boat:1 boat:2 boat:3 

など?ありがとう。

編集:もちろんのも、ArrayListの..

EDIT2:頭に浮かぶ

while (scanner.hasNext()) 
    { 
     list.add(scanner.hasNext(), 0); //the array should be <car, 0> 
    }         //later i will loop through numbers 
+0

それが解けるのです。ここに投稿する前にまずそれを試してみてはいかがですか?あなたはこれを行うことによってあなたのコンピュータを壊すことはありませんし、たとえあなたのコードがうまくいかなくても、誰かがあなたにソリューションをスプーンフィードした場合よりも、あなたの能力を押し進めるプロセスでもっと学びます。 –

+0

私は試しましたが、残念ながら私は数学のように多くの研究をしていますので、実験時間があまりありません。< –

+1

あなたは「私は試しましたが、残念ながら数学のように勉強することがとても大変です。実験には時間がかかりません - 実際にあなたの時間は私たちよりも貴重だと言っていますか?さあ、さあ! –

答えて

0

私が示唆されてるものの擬似コードはこれです:

create line Scanner 
while scanner has next *line* 
    get the next line 
    use String#split(" ") to create a String array from this line 
    Create your object from the items in this array 
    Add your new object into your list 
end while loop 
+0

ええ、私はこれが答えだと思います。私はこの問題について考えたとき、似たような疑似スケッチをしました: (スキャナは次の行にあります) (配列リスト)の次の行を保存してください) (scanner.hasNextInt()、print と増分num) と私はまだ私の編集として正しく動作するように私の2D配列を取得する方法を理解していないので、ポストと病気のおかげで、私がスキャナで実際に2次元アレイについて学ぶ時間があれば、この時点ではどこにでもいられません:P darnit、codebracketsは返事のために働きません。 –

0

まず最初は、この(あなたのファイルは常にその構造を持っているだろうと仮定した場合)である:

  • あなたの行を読み、string.split("\\s+");を使用して行を単語トークンに分割します(\\s+は正規表現言語の1つ以上のスペースを示します)。

  • 単語が常に行の最初の要素になることが確実な場合は、2番目のトークン(最初の番号)から最後のトークン(最後の番号)まで、各繰り返しごとに反復できますtypeが最初のトークンで、numbernthトークンである新しいTypeオブジェクトを作成します。

上記のようにすると、印刷時に出力が得られるオブジェクトを作成することができます。

一方で、トークンの順序が知られていない場合は

ていますが、すべての行に使用すると、1つの単語とn番号を持っていると確信しています、あなたが確認するために、このような^\\w+$^\\d+$として、さらに正規表現を使用することができましたトークンはそれぞれ単語または数字のいずれかです。どのトークンが何であるか分かったら、上記の点を参照してコードを動作させることができます。

正規表現の詳細については、thisチュートリアルをご覧ください。

+0

ええ私はその方法を知っていますが、スキャナを使う方が好きです。一般に、ファイルをハンドリングするときに本当に便利なので、トークンを暗黙に分割するからです。 –

関連する問題