⑴ java构造一个矩阵
1、java构造函数--数组 在构造函数中初始化数组,如 public class array { private int [][] matrix; public array(int r,int c) { matrix=new matrix[r][c]; } }
matrix=new matrix[r][c];
2、这里是new int[][]; java中8个基本数据类型都是有默认值的,int默认值为0 ,
3、所以数组中默认都为0.
4、但是切记有默认值的变量必须是类的属性,方法中局部变量必须赋值才可以使用。
⑵ 如何在java中,用继承的方法,写出矩阵方阵
在数学上,矩阵是指纵横排列的二维数据表格,最早来自于方程组的系数及常数所构成的方阵。
所以你可以直接用二维数组来表示一个矩阵。不过如果要用类的话,如下:
class Matrix{
int x;
int y;
int[][] num;
Matrix(int x,int y){
this.x = x;
this.y =y;
}
}
public class Test{
public static void main(String[] args){
Matrix m = new Matrix(2,3);
m.num = new int[][]{{0,4,0},{5,3,0}};
for(int i = 0 ; i < m.x ; i++){
for(int j = 0 ; j < m.y ; j++){
System.out.print(m.num[i][j]);
}
System.out.println();
}
}
}
⑶ 用java声明Matrix类表示矩阵,使用二维数组存储矩阵元素,实现以下方法:
public class Matrix {
private static String matrix_A;
private int mx[][], m, n;
public Matrix(int r, int c) {
m = r;
n = c;
mx = new int[m][n];
iniMatrix();
}
public Matrix() {
m = 3;
n = 3;
mx = new int[3][3];
iniMatrix();
}
public void iniMatrix()// 随机取数
{
int i, j;
for (i = 0; i <= m - 1; i++)
for (j = 0; j <= n - 1; j++)
mx[i][j] = (int) (Math.random() * 100);
}
public void tranMatrix()// 转置矩阵
{
int i, j, t;
int mt[][] = new int[m][n];
for (i = 0; i <= m - 1; i++)
for (j = 0; j <= n - 1; j++)
mt[i][j] = mx[i][j];
t = m;
m = n;
n = t;
mx = new int[m][n];
for (i = 0; i <= m - 1; i++)
for (j = 0; j <= n - 1; j++)
mx[i][j] = mt[j][i];
}
public void printMatrix()// 输出矩阵所有值
{
int i, j;
for (i = 0; i <= m - 1; i++) {
for (j = 0; j <= n - 1; j++)
System.out.print(" " + mx[i][j]);
System.out.println();
}
}
//判断一个矩阵是否为上三角矩阵
public boolean isUpperTriangularMatrix() {
int i, j = 0;
int c = this.mx[1][0];
for(i=1; i<this.mx.length; i++)
for(j=0; j<i; j++)
if(this.mx[i][j] != c)
break;
if(i>=this.mx.length)
return true;
return false;
}
public void addMatrix(Matrix b)// 矩阵相加
{
int i, j;
for (i = 0; i <= m - 1; i++)
for (j = 0; j <= n - 1; j++)
mx[i][j] = mx[i][j] + b.mx[i][j];
}
public static void main(String args[]) {
Matrix ma = new Matrix(4, 3);
Matrix mb = new Matrix(4, 3);
System.out.println("The matrix_A:");
ma.printMatrix();
System.out.println("The matrix_B:");
mb.printMatrix();
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();
System.out.println("Transpose Matrix_A+Matrix_B:");
mb.tranMatrix();
mb.printMatrix();
}
}
⑷ 用JAVA编写矩阵
这样定义就可以: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,这样是允许的。
⑸ 用JAVA写一个矩阵类
昨天刚帮一个网友改编的,输出矩阵并且在矩阵求幂后输出矩阵的一个类,直接可以运行。
注释都有的。希望你用的得到。import java.util.Scanner;
public class JuZhen {
//定义计算方法
public static int calc(int x, int y,int score){
if(x==0 && y==0){
score = 0;
}else {
score = 1;
}
return score;
}
//输入矩阵
public static void shuru(){
Scanner input = new Scanner(System.in);//Scanner是用来接纳系统控制台输的字符串的
System.out.print("请输入矩阵的阶数:");
int n = input.nextInt(); //取一个输入的字符赋值给n
int M[][] = new int[n][n]; //定义数组维数.初始化数组,定义了一个双向的长度为
//n的
System.out.print("请输入矩阵的的值(0-1):");
for(int i=0;i<M.length ;i++){ //不能以0开始
for(int j=0 ;j<M[i].length ; j++){
M[i][j] = input.nextInt();
}
}
System.out.println("你输入的矩阵为:");
for(int i=0;i<M.length ;i++){ //显示矩阵
System.out.print("\n");
for(int j=0 ;j<M[i].length ; j++){
System.out .print(M[i][j] + "\t") ;
}
}
}
//仅仅是一个求幂的递归。
int myPow(int x, int y) {
int pow = 0;
if (y > 0) {
pow = x * myPow(x, y - 1);// 2,3//2*2,3-1
}
if (y < 0) {
pow = 1 / x * myPow(x, y + 1);
}
if (y == 0) {
pow = 1;
}
return pow;
}
//程序入口
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("请输入矩阵的阶数:");
int n = input.nextInt();//这个相当于确定行数。
int M[][] = new int[n][n];
//定义数组维数
System.out.print("请输入矩阵的的值(0-1):");
for(int i=0;i<M.length ;i++){ //外循环表示行,在外循环已知的情况下去填内循环,内循环表示列
for(int j=0 ;j<M[i].length ; j++){
M[i][j] = input.nextInt();
}
}
int temp[][] =new int[n][n];
int m[][] =new int[n][n];
System.out.println("你输入的矩阵为:");
for(int i=0;i<M.length ;i++){ //显示矩阵
System.out.print("\n"); //执行完外循环也就是打印出一行后换行
for(int j=0 ;j<M[i].length ; j++){
temp[i][j] = M[i][j] ; //赋给矩阵temp
System.out .print(M[i][j] + "\t") ;//执行完内循环也就是一列时空两格。\t为tab键起退格作用
}
}
System.out.print("\n\n你想求几次方:");
int c =input.nextInt(); //获得幂次
for (int k=0; k<c;k++){ //最外层的循环和里边的两层循环也就是二维数组里的每个都有交集,也就是每个都要求幂
for(int i=0 ; i<M.length; i++){
for(int j=0; j<M[i].length ;j++){
m[i][j]= new JuZhen().myPow(temp[i][j],c);
}
}
}//for k
for(int i=0;i<m.length ;i++){ //显示矩阵
System.out.print("\n");
for(int j=0 ;j<m[i].length ; j++){
System.out .print(m[i][j] + "\t") ;
}
}
}//main
}//class JuZhen
⑹ 求用Java语言编写的“矩阵运算”
private static TripleSMatrix addTripleMatrix(TripleSMatrix t1,
TripleSMatrix t2) {
if (t1.getRows() != t2.getRows() || t1.getColumns() != t2.getColumns()) {
System.out.println("这两个矩阵不能相加 。");
return null;
}
TripleSMatrix sum = new TripleSMatrix();int count = 1;
int i = 1, j = 1, v;
sum.setRows(t1.getRows());
sum.setColumns(t1.getColumns());// 执行矩阵相加,按行的顺序相加,分为四种情况
while (i <= t1.getNonzeroElements() && j <= t2.getNonzeroElements()) {
if ((t1.triple[i][0] < t2.triple[j][0])
|| (t1.triple[i][0] == t2.triple[j][0] && t1.triple[i][1] < t2.triple[j][1])) {sum.triple[count][0] = t1.triple[i][0];
sum.triple[count][1] = t1.triple[i][1];
sum.triple[count][2] = t1.triple[i][2];
i++;
count++;
} else if ((t1.triple[i][0] > t2.triple[j][0])
|| (t1.triple[i][0] == t2.triple[j][0] && t1.triple[i][1] > t2.triple[j][1])) {
sum.triple[count][0] = t2.triple[j][0];
sum.triple[count][1] = t2.triple[j][1];
sum.triple[count][2] = t2.triple[j][2];
j++;
count++;
}
// 当前结点对应且两元素之和不为零
else if ((t1.triple[i][2] + t2.triple[j][2]) != 0) {
sum.triple[count][0] = t1.triple[i][0];
sum.triple[count][1] = t1.triple[i][1];
sum.triple[count][2] = t1.triple[i][2] + t2.triple[j][2];
count++;
i++;
j++;
} else {// 当前结点对应且两元素之和为零,此种情况在三元组中将不再存储
i++;
j++;
}
}
while (i <= t1.getNonzeroElements()) {
sum.triple[count][0] = t1.triple[i][0];
sum.triple[count][1] = t1.triple[i][1];
sum.triple[count][2] = t1.triple[i][2];
i++;
count++;
}while (j <= t2.getNonzeroElements()) {
sum.triple[count][0] = t2.triple[j][0];
sum.triple[count][1] = t2.triple[j][1];
sum.triple[count][2] = t2.triple[j][2];
j++;
count++;
}sum.setNonzeroElements(count - 1);
sum.sortTriple(sum.triple, 1, count);// 对输入的三元组排序
return sum;
}// 计算两个求稀疏矩阵的和 ,结果用数组表示。和为零的值不用单独做判断了这次
private static int[][] addMatrix(TripleSMatrix t1, TripleSMatrix t2) {
if (t1.getRows() != t2.getRows() || t1.getColumns() != t2.getColumns()) {
System.out.println("这两个矩阵不能相加 。");
return null;
}
int[][] c = new int[t1.getRows()][t2.getColumns()];
int i = 1, j = 1;
// 执行矩阵相加,按行的顺序相加,分为四种情况
while (i <= t1.getNonzeroElements() && j <= t2.getNonzeroElements()) {
if ((t1.triple[i][0] < t2.triple[j][0])
|| (t1.triple[i][0] == t2.triple[j][0] && t1.triple[i][1] < t2.triple[j][1])) {c[t1.triple[i][0] - 1][t1.triple[i][1] - 1] = t1.triple[i][2];
i++;
} else if ((t1.triple[i][0] > t2.triple[j][0])
|| (t1.triple[i][0] == t2.triple[j][0] && t1.triple[i][1] > t2.triple[j][1])) {c[t2.triple[j][0] - 1][t2.triple[j][1] - 1] = t2.triple[j][2];
j++;
} else {
c[t1.triple[i][0] - 1][t1.triple[i][1] - 1] = t1.triple[i][2]
+ t2.triple[j][2];
i++;
j++;
}
}// 将矩阵t1 的剩余元素插入矩阵c
while (i <= t1.getNonzeroElements()) {
c[t1.triple[i][0] - 1][t1.triple[i][1] - 1] = t1.triple[i][2];
i++;
}
// 将矩阵t2 的剩余元素插入矩阵c
while (j <= t2.getNonzeroElements()) {
c[t2.triple[j][0] - 1][t2.triple[j][1] - 1] = t2.triple[i][2];
j++;
}
return c;
}
}
⑺ JAVA怎么输出矩阵
根据输入值n初始化二维数组大小 new int[2n-1][2n-1]
设置所有值为1
改变行=n的值
改变列=n的值
输出数组
⑻ java算法--矩阵
离散函数中有一种矩阵叫子矩阵,这是典型的子矩阵。
例如本例为一个二维数组,那么a[0][i]和a[i][0]都是0;那么a[1][i]和a[i][1]都是1;以此类推,
那么对于任意的k,总有a[i][k]以及a[k][i]的值为i;
规律已经找出,剩下的交给你自己啦
⑼ 怎么说java里面没有矩阵
具体回答如下:
1Java本身似乎没有矩阵的实现,但是在进行矩阵加减乘除二维及以下操作是,是可以进行手动输入来实现的。需要满足输入矩阵在加、减过程中矩阵形式相同;在二维矩阵乘除法的手动运算中需要满足前项矩阵的列与后项矩阵的行数一致即可。
2在JAVA开发过程中,有时候会遇到矩阵的运算但是相对都会非常麻烦内有特别好的接口可以直接调用。
3对于简单的矩阵加、减、乘、除等基本操作,可以自己去写。但是遇到大型的矩阵的求逆运算以及其他复杂的操作,建议使用第三方jar包,比如math3以及常见的jama包。
⑽ java如何输入一个自定义矩阵
java中自定义矩阵:
public static void main(String[] args) {
// TODO Auto-generated method stub
int n= 5;//长度
int array_int[][] = new int[n][n];
//初始化
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(i==0){
if(j%2==0){
array_int[i][j] = (j+1)*(j+1);
}
else{
array_int[i][j] = array_int[i][j-1]+1;
}
}
else if(j==0){
if(i%2==1){
array_int[i][j] = (i+1)*(i+1);
}
else {
array_int[i][j] = array_int[i-1][j]+1;
}
}
else{
if(i<j){
if(j%2==0){
array_int[i][j] = array_int[0][j]-i ;
}
else{
array_int[i][j] = array_int[0][j]+i ;
}
}
else{
if(i%2==0){
array_int[i][j] = array_int[i][0]+j ;
}
else{
array_int[i][j] = array_int[i][0]-j ;
}
}
}
//System.out.println(i+" "+j+":"+array_int[i][j] );
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
System.out.print(array_int[i][j]+ " " );
}
System.out.println();
}
}
当等于5时的运行结果:
1 2 9 10 25
4 3 8 11 24
5 6 7 12 23
16 15 14 13 22
17 18 19 20 21