この配列をarrayListに変更しようとしています。線の 2 点の x 座標と y 座標と線の色を読み取ります。後で equals() メソッドを使用して、2 つの行が等しいかどうかを判断し、最初の行のみを追加します。今のところ、ファイルをarrayListに入れようとしています。配列 Line[]lines だけを使用すると、プログラムは正常に実行されますが、arrayList を使用してこのように実行すると、2 番目のループが arrayList に何も存在しないようにするための空白のパネルにすぎません。
私のテキストファイルは次のようになります。
3
482 22 335 492 red
482 22 335 492 blue
482 22 335 492 green
//Line[] lines;
ArrayList<Line> lines;
Scanner reader;
int numLines = reader.nextInt();
//lines = new Line[numLines];
ArrayList<Line>lines = new ArrayList<Line>();
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 );
lines.add(l);
//lines[i] = l;
このループを使用して、各行をarrayListに追加しようとしています
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);
これはペイント コンポーネントです。リストが空の場合、パネルは空白のままになります。
私の質問は、最初のループを正しく使用していますか、それとも arrayList を操作するために必要なことはありますか?