-1

Line オブジェクトを作成して配列リストに追加しようとしています。私が抱えている問題は、互いに類似している行を除外することです。2 つの行を比較して等しいかどうかを判断する equals メソッドを既に作成しました。while ループの使用に問題があります。エラーメッセージはありません。それはうまくコンパイルされます。テキストファイルから読み取れないだけです。私は立ち往生しており、ここから他にどこへ行くべきかわかりません。

public void read( File fileName ) throws Exception
{
    reader = new Scanner(fileName);


    //---------------------
    //Have to read the first number before starting the loop
    int numLines = reader.nextInt();
    lines = new ArrayList <Line> (numLines);

    //This loop adds a new Line object to the lines array for every line in the file read.
    while( reader.hasNext() ) {
        for( int i = 0; i < numLines; i++ ) {
            int x = reader.nextInt();
            int y = reader.nextInt();
            Point beg = new Point(x,y);
            x = reader.nextInt();
            y = reader.nextInt();
            Point end = new Point(x,y);

            String color = reader.next();

              Line l =  new Line( beg, end, color );

              if (l.equals(lines.get(i)))
                  break;
              else
                  lines.add(i, l);


        }
    }

    //Print the action to the console
    System.out.println( "reading text file: " + fileName );
    reader.close();

}
4

4 に答える 4

2

linesArrayList です。コードのようにiArrayListの要素にアクセスすることはできません。lines(i)あなたがする必要がありますlines.get(i)

于 2013-09-05T07:22:10.347 に答える
0

例外は明らかです。void 関数では何も返すことはできません。したがって、コードを次のように変更するだけです。

  Line l =  new Line( beg, end, color );
  //if not equals, add it
  if (!this.lines(i).equals(lines.get(i))){
            //TODO: add to you collection
  }

役立つことを願っています

于 2013-09-05T07:22:11.707 に答える
0

最初の例外はすでに他の人によって説明されているので、他の例外について説明します。

Void methods cannot return a value

次のメソッドを作成しました。

public void read( File fileName ) throws Exception

whileループでこれを行います:

    if (this.lines(i).equals(lines(i)))
        return null;
    else
        lines.add(i, l);

returnnullはループ内で使用できwhileますが、 method を宣言すると使用できませんvoidbreak代わりに使用する必要があります。

于 2013-09-05T07:27:09.443 に答える