わかりました、このコードは私が持っている割り当ての一部です。equals() メソッドを実装して、2 つの線が等しいかどうかを確認します。2 つの端点が同じ場合、2 つの線は等しいと定義されます。ただし、ここでプログラムをそのまま実行すると、配列リストが空のように空白になるため、チェックできません。私の質問は次のとおりです。ファイルを介してループ読み取りを変更する必要がありますか、それとも最初の配列のコメントを外して、arrayList に関して何かを行う必要がありますか?
どんな助けでも大歓迎です!!
//Line[] lines;
ArrayList<Line> lines;
Scanner reader;
public MyDrawing()
super();
this.setPreferredSize(new Dimension(500,500));
}
/**
* Reads the file and builds an array of Line objects.
*
* @param fileName The name of the file that contains the lines
* @throws Exception
*/
public void read( File fileName ) throws Exception
{
reader = new Scanner(fileName);
//----------------
// Change to Arraylist. Make the name of the arraylist "lines" so that code in paintComponent works.
//---------------------
//Have to read the first number before starting the loop
int numLines = reader.nextInt();
//lines = new Line[numLines];
ArrayList<Line>lines = new ArrayList<Line>();
ここで、arrayList をインスタンス化します
//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 );
//----------------
// Change to make sure that you only add lines that don't already exist.
//--------------------
lines.add(l);
//lines[i] = l;
ここで、行「l」をリストに追加しようとしました}
}
if( lines != null ) {
for( Line l: lines ) {
int x1 = l.getBeg().getX();
int y1 = l.getBeg().getY();
int x2 = l.getEnd().getX();
int y2 = l.getEnd().getY();
g.setColor(l.color);
g.drawLine(x1, y1, x2, y2);
System.out.println(l);
}
}
//Print the action to the console
System.out.println( "drawing lines" );
}
}