用JAVA编写矩阵

1 13 12 11
2 14 17 10
3 15 16 9
4 5 6 7 8
就是这个矩阵 高手帮忙 谢谢!!!
有点问题题目 这样 谢谢大家!!!
1 12 11 10
2 13 16 9
3 14 15 8
4 5 6 7

public static void main(String[] args) throws Exception {
print(create(getNum()));
}

private static int getNum() {
Scanner scanner = new Scanner(System.in);
int n = 0;
do {
System.out.println("请输入要生成的阶数:");
String input = scanner.next();
if (isDigital(input)) {
n = Integer.parseInt(input);
if (n <= 0) {
System.out.println("阶数必须大于0");
}
}
} while (n == 0);
return n;
}

private static int[][] create(int n) {
int[][] num = new int[n][n];
int ax = 1, ay = 0, x = 0, y = 0;
for (int m = 1; m <= n * n; m++) {
num[x][y] = m;
int tmpx = x + ax;
int tmpy = y + ay;
if (tmpx >= n || tmpx < 0 || tmpy >= n || tmpy < 0 || num[tmpx][tmpy] != 0) {
if (ax == 0) {
ax = -ay;
ay = 0;
} else if (ay == 0) {
ay = ax;
ax = 0;
}
}
x += ax;
y += ay;
}

return num;
}

private static void print(int[][] num) {
int length = String.valueOf(num.length * num.length).length();
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num[i].length; j++) {
String tmp = String.valueOf(num[i][j]);
while (tmp.length() < length) {
tmp = " " + tmp;
}
System.out.print(tmp + " ");
}
System.out.println();
}
}

private static boolean isDigital(String input) {
if (input == null || input.length() == 0) return false;
for (int i = 0; i < input.length(); i++) {
char ch = input.charAt(i);
if (!Character.isDigit(ch)) {
System.out.println("输入的阶数必须为数字");
return false;
}
}
return true;
}

运行时输入要生成的阶数就可以了,比如生成问题上的矩阵输入4就可以了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-03-04
这样定义就可以:int[][] array = {{1,13,12,11},{2,14,17,10},{3,15,16,9},{4,5,6,7,8}};
想要查看的话:
for(int i = 0; i < array.length; i ++) {
for(int j = 0; j < array[i].length; j ++) {
System.out.println(array[i][j]);
}
}
注:java 中的二维数组中每一维的长度是可以不同的,如例子中的,前三个长度为4,第四个长度则为5,这样是允许的。本回答被提问者采纳
第2个回答  2008-03-04
int array[4][4] = { {1,13,12,11}, {2,13,17,10}, {3, 15, 16, 9}, {4, 5, 6, 7} }
第3个回答  2008-03-04
好象有错吧 第四行怎么五列

用java声明Matrix类表示矩阵,使用二维数组存储矩阵元素,实现以下方法...
if(ma.isUpperTriangularMatrix())System.out.println("上三角矩阵:\\n" + ma.isUpperTriangularMatrix());System.out.println("Matrix_A + Matrix_B:");ma.addMatrix(mb);ma.printMatrix();System.out.println("Transpose Matrix_A:");mb.tranMatrix();mb.printMatrix();...

java怎么输出矩阵?如输入数字3,输出3×3的矩阵
可以使用嵌套的for循环来输出一个矩阵。以下是一个示例代码,它将创建一个大小为N×N的矩阵,其中N是从用户输入的数字中获取的。import java.util.Scanner;public class Matrix { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);System.out.print("请输入矩阵...

java实现矩阵相加、相乘,判断是否上(下)三角矩阵、对称矩阵、相等的算...
private int value[][]; \/\/存储矩阵元素的二维数组 public Matrix(int m, int n) \/\/构造m行n列的空矩阵 { this.value=new int[m][n];} public Matrix(int n) \/\/构造n行n列的空矩阵 { this(n,n);} public Matrix(){ this(10,10);} public Matrix(int mat[][]) \/...

写一个关于6*6矩阵的JAVA程序
1、矩阵类 public class Matrix {\/* 矩阵相乘 *\/public static double[][] multiplyMatrix(double[][] a,double[][] b){ if(a[0].length != b.length) { return null; } double[][] c=new double[a.length][b[0].length]; for(int i=0;i<a.length;i++) { ...

用JAVA语言编程.有一个5×4的矩阵,要求编程序求出其中值最大的那个...
import java.util.Random;public class Test2 { public static void main(String[] args){ \/\/ 初始化出一个5X4的矩阵 int[][] a = new int[5][4]; Random r = new Random(); for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++...

如何用java编写一个矩阵的转置?
int a[][] = {{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4}}; int b[][] = new int [4][7]; for (int i = 0; i < 4; i++) { for (int j = 0; j < 7; j++) { b[i][j] = a[j][i];...

java编写程序,提示用户输入一个方阵的长度,随机地在矩阵中填入0或1...
public static void main(String[] args) { \/\/ TODO Auto-generated method stub Scanner input = new Scanner(System.in);System.out.print("Enter the size for the matrix: ");int size = input.nextInt();int [][] array = new int [size][size];for(int i = 0;i<size;i++) ...

用Java,定义一个二维数组,完成如下任务:将1~25依次存入一个5*5的矩 ...
可以使用如下的Java代码来定义一个5x5的二维数组,并依次存入1~25的数字:int[][] matrix = new int[5][5];int count = 1;for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { matrix[i][j] = count++;} } 矩阵中心的数值可以通过如下方式求得:int ...

用java怎么写矩阵乘法?
import java.util.Scanner; public class Matrix { public double[][] create() { Scanner sc = new Scanner(System.in) ; System.out.print("请输入矩阵的行高:"); int a = sc.nextInt() ; System.out.print("请输入矩阵的列宽:"); int b = sc.nextInt() ; double[][] x = new double[a]...

用java 编程将一个N*N的矩阵,对角线上元素置为1,其它均为0
import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("输入n:");int n = scanner.nextInt();int i[][] = new int[n][n];for (int j = 0; j < n; j++) {for (int k = 0; ...

相似回答