如何停止在java中打印空矩阵
虽然这段代码工作并执行,但它有一个问题。代码的目标是在矩阵中移动[x]。但在完成第一行后,它会打印一个完全空白的数组。这意味着没有一点同时存在如何停止在java中打印空矩阵,java,matrix,Java,Matrix,虽然这段代码工作并执行,但它有一个问题。代码的目标是在矩阵中移动[x]。但在完成第一行后,它会打印一个完全空白的数组。这意味着没有一点同时存在i==x和j==y 然后,在它再次打印之后,它继续它停止的地方。这意味着它永远不会按分配的打印完成阵列的循环 展示我的意思的图片: 我该如何解决这个问题?这是因为在else属性moveX激活之后,j==0和y==1;至少,这是我必须假设的是空白打印。 public class MovingX { private int rowsN;
i==x
和j==y
然后,在它再次打印之后,它继续它停止的地方。这意味着它永远不会按分配的打印完成阵列的循环
展示我的意思的图片:
我该如何解决这个问题?这是因为在else
属性moveX
激活之后,j==0
和y==1
;至少,这是我必须假设的是空白打印。
public class MovingX {
private int rowsN;
private int columnsM;
private int[][] matrixArr = new int[rowsN][columnsM];
private int x = 0;
private int y = 0;
public MovingX(int n, int m) {
rowsN = n;
columnsM = m;
matrixArr = new int[n][m];
}
public void forLoopGrid() {
for(int i = 0; i < matrixArr.length; i++) {
for(int j = 0; j < matrixArr.length; j++) {
if(i == x && j == y) System.out.print("[x] ");
else {
System.out.print("[ ] ");
}
}
System.out.println();
}
System.out.println();
}
public void moveX() {
if(x < 4) x++;
else {
x = 0;
y++;
}
}
public void runProgram() {
System.out.println("Program Starting");
System.out.println("Rows, Columns: " + rowsN + " " + columnsM);
for(int i = 0; i < (rowsN * columnsM); i++) {
forLoopGrid();
moveX();
}
System.out.println("Program Ending");
}
public static void main(String[] args) {
MovingX xLoop = new MovingX(4, 4);
xLoop.runProgram();
}
}
公共类MovingX{
私有内部rowsN;
私人专栏;
私有int[]matrixArr=新int[rowsN][columnsM];
私有整数x=0;
私有整数y=0;
公共移动X(整数n,整数m){
rowsN=n;
柱状SM=m;
matrixArr=新整数[n][m];
}
公共void forLoopGrid(){
对于(int i=0;i
在函数中moveX()
您应该更改if语句中的条件。以下为正确版本:
public void moveX(){
if(x < 3) x++;
else{
x = 0;
y++;
}
}
public void moveX(){
如果(x<3)x++;
否则{
x=0;
y++;
}
}
0索引在各种循环中都可能扮演一个棘手的角色。由于您的moveX()
方法上升到x=4
,因此最多的for的0索引计数为0,1,2,3,4。这是5个要素。你的矩阵是4x4。您需要一个x=3的计数,即0,1,2,3。4个元素
您必须将moveX()
更改为
public void moveX(){
if (x < 3)
x++;
else {
x = 0;
y++;
}
}
public void moveX(){
if(x<3)
x++;
否则{
x=0;
y++;
}
}
完美。非常感谢。我现在明白为什么了。它实际上是x的原因,<4实际上是0 1 2 3 4,而不是4行和4列,即0 1 2 3