gpt4 book ai didi

java - 获取错误的坐标

转载 作者:行者123 更新时间:2023-11-30 03:27:12 28 4
gpt4 key购买 nike

placedShapeInfo() 给了我几乎正确的结果,只是它给了我错误的 Shapes at (?,?) 坐标,如以下测试用例所示: enter image description here

在读取 placedShapeInfo() 中的这一行时,我似乎做错了:

"("+coords.get(i)+"," + coords.get(i+1)+")"

每次将形状传递给 placeShapeAt(int row, int col, Shape shape) 时,我都会将其 rowcol 添加到 数组列表坐标。smb 可以帮我解决这个问题吗?

import java.util.*;

public class CreateSpace implements Space{

private int height;
private int width;
//private int placedAtRow = 0;
//private int placedAtCol = 0;
private String layout;
private char[][] space;
private Shape originalShape;
private ArrayList<CreateShape> shapes = new ArrayList<>();
private ArrayList<Integer> coords = new ArrayList<>();


Set<Character> shapesCount;

public CreateSpace(int height, int width, char[][] space, String layout)
{
this.height = height;
this.width = width;
this.space = space;
this.layout = layout;
}
public void placeShapeAt(int row, int col, Shape shape)
{
int row1 = row;
int col1 = col;

int sHeight = shape.getHeight();
int sWidth = shape.getWidth();

char [][] spaceWithShapes = space;
if(shapeFitsAt(row, col, shape))
{
for(int r = 0; r < sHeight; r++)
{
for(int c = 0; c < sWidth; c++)
{

if(spaceWithShapes[r+row][c+col] == '.' && shape.isFilledAt(r, c))// && shape.isFilledAt(r,c) == true) //|| (((CreateShape)shape).getShape()[r][c] == '.'))
{
spaceWithShapes[r+row][c+col] = shape.getDisplayChar();
}

}

}

shapes.add((CreateShape)shape);
coords.add((Integer)row1);
coords.add((Integer)col1);
//shapes.add((Integer)row1);
Collections.sort(shapes);
setSpace(spaceWithShapes);

}


else
throw new FitItException("The shape does not fit!");
}
public String placedShapeInfo()
{
Collections.sort(shapes);
int shapesTotal = placedShapeCount();
String desc = shapesTotal + " shapes placed";
String getShapeInfo = "";


for(int i = 0; i < shapes.size(); i++)
//for(int j = 0; j < coords.size(); j++)
{

getShapeInfo +="Shape at " + "("+coords.get(i)+"," + coords.get(i+1)+")" + "\n" + shapes.get(i).toString() + "\n";
System.out.println();
}

return desc + "\n" +
getShapeInfo;

最佳答案

您的坐标是一个整数列表。因此,您在 (1,2) 和 (3,4) 处添加两个形状。所以坐标现在是(1,2,3,4)。

然后,您迭代形状列表,并为每个形状获取 coords.get(i)coords.get(i+1)。您发现问题了吗?

对于第一个形状,i=0,您将得到坐标 0 和 1,从而得到 (1,2)。

对于第二个形状,i=1,您将得到坐标 1 和 2,从而得到 (2,3)。

您没有始终如一地使用i。也许每个形状都应该知道自己的坐标,并且您应该向其询问其 x 和 y,而不是将它们存储在外部数据结构中。这是处理它的一种方法,也是 OO 编程所擅长的事情。

关于java - 获取错误的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29926317/

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