Java 有没有可能把我的代码压缩成少于3行? 公共类MagicSquare { 公共静态int[]grid=newint[3][3]; 公共静态int i=0; 公共静态int j=0; 公共静态void main(字符串[]args){ int x=1; int y=2; int z=0; 而(z
输出如下所示: 2,4,9,Java 有没有可能把我的代码压缩成少于3行? 公共类MagicSquare { 公共静态int[]grid=newint[3][3]; 公共静态int i=0; 公共静态int j=0; 公共静态void main(字符串[]args){ int x=1; int y=2; int z=0; 而(z,java,magic-square,Java,Magic Square,输出如下所示: 2,4,9, 6,8,1, 7,3,5, 你好,, 我写了一个黑魔法代码,它能够填充正方形的网格和右边,但是如果它填充了一个数字,那么下一个数字将被放在它当前位置下方的正方形中 然后,向上向右移动一个正方形,然后将下一个整数放在那里,如果我也离开网格,那么下一个数字将环绕底部和/或左侧。该程序运行,直到所有的正方形都被填满 我想知道是否有可能将从while循环开始到for循环结束的代码压缩成更短的代码 有人说我只需要两行代码就可以完成,我觉得这很奇怪……但他们说这是可行的 任何提
6,8,1,
7,3,5, 你好,, 我写了一个黑魔法代码,它能够填充正方形的网格和右边,但是如果它填充了一个数字,那么下一个数字将被放在它当前位置下方的正方形中 然后,向上向右移动一个正方形,然后将下一个整数放在那里,如果我也离开网格,那么下一个数字将环绕底部和/或左侧。该程序运行,直到所有的正方形都被填满 我想知道是否有可能将从while循环开始到for循环结束的代码压缩成更短的代码 有人说我只需要两行代码就可以完成,我觉得这很奇怪……但他们说这是可行的 任何提示、帮助或指示都将不胜感激
非常感谢!不确定是否少于3行(至少在不牺牲可读性的情况下),但您可以肯定地压缩这些if语句
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]+", ");
}
}
简单地说
if(x == 3) {
x = 0;
}
if(y == -1) {
y = 2;
}
if(y == 3) {
y = 0;
}
你可以把它们放到前面的x++
和y--
类似地,holdy
(如果您确实需要该值,我不知道)
然后,如果您只想打印数组,可以缩短for循环
x = (x + 1) % 3;
y = ((y - 1) + 3) % 3;
不确定少于3行(至少在不牺牲可读性的情况下),但可以肯定地压缩这些if语句
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]+", ");
}
}
简单地说
if(x == 3) {
x = 0;
}
if(y == -1) {
y = 2;
}
if(y == 3) {
y = 0;
}
你可以把它们放到前面的x++
和y--
类似地,holdy
(如果您确实需要该值,我不知道)
然后,如果您只想打印数组,可以缩短for循环
x = (x + 1) % 3;
y = ((y - 1) + 3) % 3;
大约10年前,我编写了以下用于计算幻方条目的代码。从某种意义上说,这可以归结为一行代码,适用于任意奇数边长度:
for(int[] row : grid) {
System.out.println(Arrays.toString(row));
}
M类
{
公共静态void main(字符串参数[])
{
int n=5;
int a[][]=新int[n][n];
f(n,1,n/2,n-1,a);
印刷品(a);
}
静态intf(intj,inti,intk,intl,inti[]))
{
返回i>j*j?i-1:(i[k][l]=f(j,i+1,(k+(i%j==0?0:1))%j,(l+(i%j==0?-1:1))%j,i))-1;
}
公共静态无效打印(int a[]]
{
对于(int i=0;i和)更适合,但可能会显示当您(ab)时可以在一行代码中按多少适当地使用三元运算符和递归…大约10年前,我编写了以下代码来计算幻方的条目。从某种意义上说,这可以归结为一行代码,适用于任意奇数边长度:
for(int[] row : grid) {
System.out.println(Arrays.toString(row));
}
M类
{
公共静态void main(字符串参数[])
{
int n=5;
int a[][]=新int[n][n];
f(n,1,n/2,n-1,a);
印刷品(a);
}
静态intf(intj,inti,intk,intl,inti[]))
{
返回i>j*j?i-1:(i[k][l]=f(j,i+1,(k+(i%j==0?0:1))%j,(l+(i%j==0?-1:1))%j,i))-1;
}
公共静态无效打印(int a[]]
{
对于(int i=0;i和更适合,但可能会显示当(ab)适当地使用三元运算符和递归时,可以在一行代码中按多少…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++){for(int j=0;j<3;j++){System.out.print(grid[i][j]+“,”;}System.out.println();}
。我想知道是否有可能压缩我的代码——听起来你可以找个人来@ROMANIA haha,如果可以的话only@cricket_007谢谢你的提醒,但我没有在这里发布太多内容,所以我不知道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++){for(int j=0;j<3;j++){System.out.print(grid[i][j]+”,”;)System.out.println();}
。我想知道是否可以压缩我的代码——这听起来像是你可以找个人来@ROMANIA haha,如果可以的话only@cricket_007谢谢你的提醒,但是我没有在这里贴太多,所以我不知道