gpt4 book ai didi

java - 将文本文件的 X 和 Y 坐标读取到数组列表中

转载 作者:行者123 更新时间:2023-12-01 14:09:39 24 4
gpt4 key购买 nike

我正在尝试将此数组更改为 arrayList。它读取一条线的两个点的 x 和 y 坐标以及线的颜色。稍后我将使用 equals() 方法来确定两行是否相等并仅添加第一行。现在我只是尝试将文件放入 arrayList 中。如果我只使用数组 Line[]lines,程序运行正常,但是当我像这样使用 arrayList 运行它时,它只是一个空白面板,这就是第二个循环导致 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 一起使用?

最佳答案

没有进一步的上下文,您似乎正在隐藏您的变量......

您从这些声明开始,它们“出现”在实例变量中......

//Line[] lines;
ArrayList<Line> lines;
Scanner reader;

但是当你初始化它们时,你会这样做......

int numLines = reader.nextInt();
//lines = new Line[numLines];
ArrayList<Line>lines = new ArrayList<Line>();
// Warning bells, redeclaration of lines!!

这“表明”您正在隐藏变量,这意味着您的绘制方法正在使用对您在类级别声明的 lines 的引用。

相反,您应该像这样初始化变量......

int numLines = reader.nextInt();
//lines = new Line[numLines];
lines = new ArrayList<Line>(numLines);
注意。使用 numLines来初始化 ArrayList,效率会更高...

关于java - 将文本文件的 X 和 Y 坐标读取到数组列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18627185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com