我想创建一个大小为N乘N的矩阵,其中N是全局定义的常量值,现在我只想创建一个N = 6的矩阵。在我不知所措的地方,我想做对角线,就像这样:
0 1 2 3 4 5
1 0 1 2 3 4
2 1 0 1 2 3
3 2 1 0 1 2
4 3 2 1 0 1
5 4 3 2 1 0
目前我有这种方法:
public static void drawMatrix(){
for (int line = 0; line < N; line++){
for (int j = 0; j < N; j++){
System.out.print(j + " ");
}
System.out.println();
}
}
不幸的是,它只能在每一行打印0 1 2 3 4 5,所以我想我需要另一个嵌套的for循环,但是我不知道如何设置它。
答案 0 :(得分:10)
j
是列号,因此对于所有行都是相同的。您需要做的是在行号中添加或减去N
,具体取决于行号,以便进行“转移”。由于结果可能会变为负数,因此您需要按N
添加if (j > line) {
System.out.print((N-line+j)%N + " ");
} else {
System.out.print((line-j+N)%N + " ");
}
和 mod :
if
您也可以使用条件表达式在没有int sign = j > line ? -1 : 1;
System.out.print((N+sign*(line-j))%N + " ");
的情况下重写它:
{{1}}
答案 1 :(得分:6)
您的代码稍有变化
public static void drawMatrix() {
for(int line = 0; line < N; line++) {
for(int j = 0; j < N; j++) {
System.out.print(Math.abs(line - j) + " ");
}
System.out.println();
}
}
答案 2 :(得分:1)
我会做类似的事情:
imgDecodableString = "/storage/emulated/0/DCIM/Camera/IMG_20160114_141351594.jpg"
Bitmap decodedBitmap = BitmapFactory.decodeFile(imgDecodableString);
Log.d(Constants.TAG, "decodedBitmap: " + decodedBitmap);
假设您可以使用abs()。 我希望能帮到你的目的。
答案 3 :(得分:0)
这也有效:
public static void main(String[] args) {
int N = 6;
int column = 0;
for (int row = 0; row < N; row++) {
for (column = row; column >= 0; column--) //prints till row number reaches 0
System.out.print(column + " ");
for (column = 1; column < N - row; column++)//from 1 to N-row
System.out.print(column + " ");
System.out.println();
}
}