⑴ 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