public class MagicSquare
{
public static int[][] grid = new int[3][3];
public static int i = 0;
public static int j = 0;
public static void main(String[] args) {
int x = 1;
int y = 2;
int z = 0;
while(z < 9)
{
int holdx = x;
int holdy = y;
z++;
x++;
y--;
if(x == 3)
{
x = 0;
}
if(y == -1)
{
y = 2;
}
if(y == 3)
{
y = 0;
}
if(grid[x][y] == 0)
{
grid[x][y] = z;
}
else
{
holdy++;
if(holdy == 3)
{
holdy = 0;
}
grid[holdx][holdy] = z;
x = holdx;
y = holdy;
}
}
for(int i = 0; i < 3; i++)
{
System.out.print(grid[i][0]+", ");
}
System.out.println(" ");
for(int i = 0; i < 3; i++)
{
System.out.print(grid[i][1]+", ");
}
System.out.println(" ");
for(int i = 0; i < 3; i++)
{
System.out.print(grid[i][2]+", ");
}
}
輸出看起來像這樣:是否可以將我的代碼壓縮到少於3行?
2,圖4,圖9,
6,8,如圖1所示,
7,3,5,
您好, 我寫了一個黑魔術代碼能夠填滿方格的網格和右方的網格,但如果它填充了一個數字,則下一個數字將放置在當前點以下的方格中。
然後,向上並向右移一個方塊,並在那裏放置下一個整數,如果我也離開網格,則下一個數字將環繞到底部和/或左側。這個程序運行直到所有的方塊都被填滿。
我想知道是否可以將我的代碼在我的while循環開始時縮短到我的for循環結束時變成較短的代碼?
有人說我可以編寫這個USING JUST 2行,我認爲這是奇怪的......但他們說這是可行的!
任何提示,幫助或指針,將不勝感激!
非常感謝!
x,y和z代表什麼? –
告訴他你在一行System.out.println(「2,4,9」+ System.lineSeparator()+「6,8,1」)+ System.lineSeparator()+「7」 3,5,「);'。 :)你可以從刪除無用的靜態變量開始,然後使用一個新的for循環來打印:for(int i = 0; i <3; i ++){int j = 0; j < 3; j ++){System.out。print(grid [i] [j] +「,」); } System.out.println(); }'。 –
*我想知道是否可以濃縮我的代碼* - 這聽起來像你可以用某人[檢查你的工作代碼](http://codereview.stackexchange.com/tour) –