Java矩阵-转置&;总和
我正在eclipse上开发一个矩阵程序,目前我一直在使用两种方法,我认为这两种方法是最简单的。我正在研究的第一种方法是从@testcases中获取两个不同的2D数组的和,然后在一个新的2D数组中返回和。我已经有一个2D数组实例变量。我被卡住的原因是因为方法中的参数。除了类(矩阵)和变量(其他)之外,该参数不提供任何变量。所以我想知道如何开始这个方法,最重要的是返回和数组 我一直坚持的另一种方法是转置方法,其中必须翻转给定2D数组的行和列。我知道我必须创建一个临时2D数组,以便将内容存储回原始2D数组,但由于某些原因,它无法通过测试用例。如果有人能在这两种方法上帮助我,我将不胜感激Java矩阵-转置&;总和,java,arrays,eclipse,matrix,transpose,Java,Arrays,Eclipse,Matrix,Transpose,我正在eclipse上开发一个矩阵程序,目前我一直在使用两种方法,我认为这两种方法是最简单的。我正在研究的第一种方法是从@testcases中获取两个不同的2D数组的和,然后在一个新的2D数组中返回和。我已经有一个2D数组实例变量。我被卡住的原因是因为方法中的参数。除了类(矩阵)和变量(其他)之外,该参数不提供任何变量。所以我想知道如何开始这个方法,最重要的是返回和数组 我一直坚持的另一种方法是转置方法,其中必须翻转给定2D数组的行和列。我知道我必须创建一个临时2D数组,以便将内容存储回原始2D
import java.util.Arrays;
public class Matrix {
private int[][] array;
private int[][] array2;
private int theRow;
private int theCol;
public Matrix(int[][] arrayOfArrays) {
// TODO Auto-generated constructor stub
array = new int[arrayOfArrays.length][arrayOfArrays[0].length];
for (int r = 0; r < arrayOfArrays.length; r++) {
for (int c = 0; c < arrayOfArrays[r].length; c++) {
array[r][c] = arrayOfArrays[r][c];
}
}
}
public int get(int row, int column) {
return array[row][column];
}
public int getNumberOfRows() {
int nRows = array.length;
return nRows;
}
public int getNumberOfColumns() {
int nCols = array[0].length;
return nCols;
}
public String toString() {
String res = "";
for (int r = 0; r < array.length; r++) {
for (int c = 0; c < array[r].length; c++)
res = res + array[r][c];
}
return res;
}
public Matrix sum(Matrix other) {
return sum;
}
public void scalarMultiply(int scalar) {
for (int r = 0; r < array.length; r++) {
for (int c = 0; c < array[0].length; c++) {
array[r][c] = array[r][c] * scalar;
}
}
}
public void transpose() {
int m = array.length;
int n = array[0].length;
int[][] transpose = new int [n][m];
int temp;
for (int r = 0; r < m; r++) {
for (int c = 0; c < n; c++) {
transpose[c][r] = array[r][c];
array[r][c] = array[c][r];
array[c][r] = transpose[c][r];
}
}
}
//The test cases for sum method and transpose method
@Test
public void testSum() {
int[][] a1 = { { 1, 2, 3 },
{ 5, 6, 7 } };
Matrix a = new Matrix(a1);
int[][] a2 = { { -2, -2, -2 },
{ 4, 4, 4 } };
Matrix b = new Matrix(a2);
Matrix c = a.sum(b);
assertEquals(-1, c.get(0, 0));
assertEquals(0, c.get(0, 1));
assertEquals(1, c.get(0, 2));
assertEquals(9, c.get(1, 0));
assertEquals(10, c.get(1, 1));
assertEquals(11, c.get(1, 2));
}
@Test
public void testTranspose() {
int[][] a1 = { { 1, 3, 5 },
{ 2, 4, 6 } };
Matrix a = new Matrix(a1);
a.transpose();
assertEquals(1, a.get(0, 0));
assertEquals(2, a.get(0, 1));
assertEquals(3, a.get(1, 0));
assertEquals(4, a.get(1, 1));
assertEquals(5, a.get(2, 0));
assertEquals(6, a.get(2, 1));
}
导入java.util.array;
公共类矩阵{
私有int[][]数组;
私有int[][]阵列2;
私人内部流动;
私人国际律师事务所;
公共矩阵(int[][]阵列法拉利){
//TODO自动生成的构造函数存根
array=new int[arrayOfArrays.length][arrayOfArrays[0.length];
for(int r=0;r
您需要更改尺寸,例如2x3->3x2
import java.util.Arrays;
public class Matrix {
private int[][] array;
private int[][] array2;// remove this
private int theRow;// remove this
private int theCol;// remove this
public void transpose() {
int m = array.length;
int n = array[0].length;
int[][] transpose = new int [n][m];
for (int r = 0; r < m; r++) {
for (int c = 0; c < n; c++) {
transpose[c][r] = array[r][c];
}
}
array = transpose;
}
}
导入java.util.array;
公共类矩阵{
私有int[][]数组;
私有int[][]数组2;//删除此
private int theRow;//删除此
private int theCol;//删除此
公共无效转置(){
int m=数组长度;
int n=数组[0]。长度;
int[][]转置=新的int[n][m];
对于(int r=0;r
我想看看你自己的一些测试用例。从一些简单的1x2、2x1和2x2矩阵开始,计算你自己的值。告诉我们你有什么问题。关于要求是什么,我想澄清一些问题。从转置()开始。
你的求和(…)
方法无法按原样工作。other
的类型为int[]
,但您希望返回一个矩阵
。这必须在解析器中生成编译时错误。请提供确切的代码以及您使用的测试。好的,我已经提供了这两个方法的测试用例。我是否必须为sum()声明一个新数组方法?我对这一点很困惑。同时提供了我代码的其余部分。这非常有用!非常感谢你的帮助