4 回答

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊
我通常發(fā)現(xiàn)扁平化事物(特別是 if 條件)并將條件放入布爾返回方法中會(huì)有所幫助。嘗試類(lèi)似的東西
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++ {
if (isCorner(i,j,n) || !isEdge(i,j,n)) {
//...
} else {
//...
}
}
System.out.println();
}
其中isCorner(i,j,n)和 的isEdge(i,j,n)定義類(lèi)似于
public boolean isCorner(int row, int column, int gridSize) {
//...
}

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果您找到了解決方案,只是缺少空格,我將添加一些聰明的東西:
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
boolean visible = (i % (n - 1) == 0) == (j % (n - 1) == 0);
if (visible) {
System.out.printf(" %4d", a[i][j]);
} else {
System.out.print(" ");
}
}
System.out.println();
}
盡管我在這里使用了空格,但制表符不再有任何問(wèn)題"\t"。
保持簡(jiǎn)單,太多的情況只會(huì)導(dǎo)致問(wèn)題 - 正如您所經(jīng)歷的那樣。這里的技巧是考慮是否打印。因此我從一個(gè)變量開(kāi)始visible。
邊界條件
i == 0 || i == n - 1
也可以用模寫(xiě)為
i % (n - 1) == 0
如果這“太聰明”了,很難理解閱讀:
boolean iOnBorder = i % (n - 1) == 0;
boolean jOnBorder = j % (n - 1) == 0;
boolean visible = iOnBorder == jOnBorder;
“X”模式檢查 i-on-border 和 j-on-border 的 _equivalence。
其余的:格式化的 printf 允許填充數(shù)字。

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
試試這個(gè)我已經(jīng)優(yōu)化了你的 if 條件
不需要再次檢查i == 0ori == n-1
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(i==0 || i==n-1){
if(j==0 || j==n-1){
System.out.print(a[i][j]);
}
}else{
if(j != 0 && j!= n-1){
System.out.print(a[i][j]);
}
}
System.out.print("\t");
}
System.out.println();
}

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
試試這個(gè)我已經(jīng)優(yōu)化了你的 if 條件
不需要再次檢查i == 0ori == n-1
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(i==0 || i==n-1){
if(j==0 || j==n-1){
System.out.print(a[i][j]);
}
}else{
if(j != 0 && j!= n-1){
System.out.print(a[i][j]);
}
}
System.out.print("\t");
}
System.out.println();
}
添加回答
舉報(bào)