java问题,求解答,一个破碎的砝码一个跳马,代码完全没问题要求找出不符合编程规范的地方,越详细越好。

2024-11-13 05:43:44
推荐回答(3个)
回答1:

我看到的代码不规范大的地方主要有两点:
1、变量命名。i,j,k,s,x1,x2,x3,x4从命名上无法直观地体现出变量本身的含义来
2、魔法数。像40这种,应该做成常量
小的地方就是变量的作用域还可以注意一下:
private boolean getWeight(int i, int j, int k, int s, int weight) {
int x1, x2, x3, x4;
for (x1 = -1; x1 <= 1; x1++)
for (x2 = -1; x2 <= 1; x2++)
for (x3 = -1; x3 <= 1; x3++)
for (x4 = -1; x4 <= 1; x4++)
if (x1 * i + x2 * j + x3 * k + x4 * s ==weight)
return true;

return false;
}
比如像这个,x1,x2,x3,x4都只在for循环中使用,为啥要声明在外面呢
private boolean getWeight(int i, int j, int k, int s, int weight) {
for (int x1 = -1; x1 <= 1; x1++)
for (int x2 = -1; x2 <= 1; x2++)
for (int x3 = -1; x3 <= 1; x3++)
for (int x4 = -1; x4 <= 1; x4++)
if (x1 * i + x2 * j + x3 * k + x4 * s ==weight)
return true;

return false;
}

回答2:

楼主你好:楼主的思维逻辑性很强。
但是这里的一个小错误我还是要指出来的。
for (i = 1; i <= 40; i++)

for (j = i + 1; j <= 40 - i; j++)
for (k = j + 1; k <= 40 - j - i; k++)
for (s = k + 1; s <= 40- k - j - i; s++)
在说说这个地方的逻辑把
碎片并没有说不能重量相等,而且i能取到大于37吗?
for(i=1;i<=37;i++)
for(j=1;j<=37-i;j++)
for(k=1;k<=37-i-j;k++)
for(s=1;s<=37-i-j-k;s++)
如果i取到大于37那么另外3个碎片就不完整了。
其他的逻辑很正确。。。

回答3:

首先一点 虽然for、if等语句支持不加{}的写法,但是强烈不推荐这样写
还有循环
int i;
for(i=0.i<3;i++){}
这样写不好,i是for循环的局部变量
应该
for(int i=0;i<3;i++){}