int num[3][4];
for(i=0;i <3;i++)
for(t=0;t <4;t++)
num[i][t] = (i*4)+t+1;
上面代码初始化1到12的二维矩阵,由于数据很规律,很容易得到(i*4)+t+1赋值语句,
一般二维数组的初始化也都是根据实际情况来判断,
比如
1 2 3 4
2 3 4 1
3 4 1 2
4 1 2 3
该矩阵中的数字很规则,在实际解决该问题时,只需要把数值的规律描述出来即可。
实现思路:声明一个变量n,代表矩阵的阶,声明和初始化一个nXn的数组,根据数据的规律,则对应的数值为(行号 + 列号 + 1),当数值比n大时,取和n的余数
根据判断都可以得到赋值语句,可是假如我们的数据很复杂,但从判断很难得到这个初始化赋值语句,那该怎么办,有没有规律可循?
换句话说,对应一个矩阵怎么样用数学归纳法证明矩阵的i行j列的数据等于(i*4)+t+1,或者是(行号 + 列号 + 1)或者是其他的什么东西?
我比较懒不愿意写脚本解释程序,看看高手们如何解决
[code="java"]package com.saturday;
import java.lang.reflect.Array;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class TestReflax {
private static ScriptEngineManager scriptMgr=new ScriptEngineManager();
private static ScriptEngine scriptEng=scriptMgr.getEngineByName("javascript");
public static void main(String[] args){
double[][] matrix=new double[4][4];
String sValExpres="($row+$col+1)<=4?($row+$col+1):($row+$col+1)%4";
setMatrix(matrix,sValExpres);
outputMatrix(matrix);
}
public static void outputMatrix(double matrix[][]){
int nRowC=matrix.length;
int nColC=matrix[0].length;
for(int i=0;i<nRowC;i++){
for(int j=0;j<nColC;j++){
System.out.print(matrix[i][j]+" ");
}
System.out.print("\n");
}
}
public static void setMatrix(double matrix[][],String sValExpres){
int nRowC=matrix.length;
int nColC=matrix[0].length;
for(int i=0;i<nRowC;i++){
for(int j=0;j<nColC;j++){
matrix[i][j]=getExpressVal(i,j,sValExpres);
}
}
}
public static double getExpressVal(int nRow,int nCol,String sValExpres){
double nValue=0;
try{
sValExpres=sValExpres.replaceAll("\\$row",nRow+"")
.replaceAll("\\$col",nCol+"");
nValue=(Double)scriptEng.eval(sValExpres);
}catch(Exception ex){
}
return nValue;
}
}[/code]
果然被移动了,javaeye的规矩还真是蛮严格的