用两个循环打印
问题描述:
我想从两个单独的数组中使用两个for循环打印出X和Y坐标。每个点都减少或增加。网格空间是500x500。我应该基本上结束与输出显示星号的行或者向上或向下。数组正确填充,并且X和Y坐标正确递减或递增。我无法得到它的工作....用两个循环打印
填充板方法填充b1数组与点的x成员和b2数组与点的y成员。
populateBoard(b1,b2,point);
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix.length; j++) {
if(i == b2[i] && j == b1[j])
System.out.print("*");
else
System.out.print(" ");
}
System.out.println();
}
在上面的代码中,我的逻辑错误是什么?但是,当我使用它(它显然只适用于一点)。
if(i == b2[0] && j == b1[0])
答
在上面的代码的逻辑是这样的假设:你的双循环的I/J次迭代你会遇到一个点,其X/Y值恰好是正好等于I/J, 。
工作溶液是如下
private static void populateBoard(int[] xs, int[] ys, int w, int h)
{
Set<Point> points = new HashSet<>();
for(int i=0;i<xs.length;i++)
{
int x = xs[i];
int y = ys[i];
points.add(new Point(x,y));
}
for(int i=0;i<h;i++)
{
for(int j=0;j<w;j++)
{
Point p = new Point(j,i);
if(points.contains(p))
System.out.print("■");
else
System.out.print(".");
}
System.out.print("\n");
}
}
当运行对一个简单的例子的代码:
int[] xs = {1,4,1,4,1,2,3,4};
int[] ys = {1,1,3,3,4,4,4,4};
populateBoard(xs, ys, 6, 6);
它产生以下的(正确的)输出:
......
.■..■.
......
.■..■.
.■■■■.
......
答
尝试这个。
boolean[][] temp = new boolean[matrix.length][matrix.length];
for (int i = 0; i < b1.length; ++i)
temp[b2[i]][b1[i]] = true;
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix.length; j++)
System.out.print(temp[i][j] ? "*" : " ");
System.out.println();
}
你的populateBoard方法的第三个参数有什么作用? – aydinugur
什么是输入(方法参数)和预期输出? – Pshemo
你应该使用1个循环而不是2个? –