Java 获取从一个类到另一个类的数组长度
我需要从另一个类获取数组长度的帮助。i、 例如,将数组的长度从一个类传递到另一个类。问题就在这里 Testmatrix.java 构造器中的一切似乎都是正确的。但问题是打印功能。数据的大小应为2。但是它的值是4,声明的值是初始化的。有人帮我解决这个问题。我需要打印所有0的2x2矩阵,但我要打印所有0的4x4矩阵Java 获取从一个类到另一个类的数组长度,java,arrays,matrix,Java,Arrays,Matrix,我需要从另一个类获取数组长度的帮助。i、 例如,将数组的长度从一个类传递到另一个类。问题就在这里 Testmatrix.java 构造器中的一切似乎都是正确的。但问题是打印功能。数据的大小应为2。但是它的值是4,声明的值是初始化的。有人帮我解决这个问题。我需要打印所有0的2x2矩阵,但我要打印所有0的4x4矩阵 提前感谢**您将阵列声明为4x4矩阵。第4行应为双精度数据[][]=新双精度[2][2];为了达到您想要的效果。您将阵列声明为4x4矩阵。第4行应为双精度数据[][]=新双精度[2][2
提前感谢**您将阵列声明为4x4矩阵。第4行应为双精度数据[][]=新双精度[2][2];为了达到您想要的效果。您将阵列声明为4x4矩阵。第4行应为双精度数据[][]=新双精度[2][2];为了达到您想要的效果。当您创建一个数组时,您设置了大小,例如new double[4][4],然后这已经是该数组的大小,即使您没有在其中插入任何内容。我的观点是,无论您插入1个元素、2个元素还是8个元素,这都无关紧要,插入到数组并不会改变它由length返回的size属性。想象一个袋子,你有一个特定大小的袋子,不管你是否把物品放在里面,袋子的大小都会保持不变。当你创建一个数组时,你设置了大小,例如新的双精度[4][4],那么它已经是这个数组的大小了,即使你没有在里面插入任何东西。我的观点是,无论您插入1个元素、2个元素还是8个元素,这都无关紧要,插入到数组并不会改变它由length返回的size属性。想象一个袋子,你有一个特定大小的袋子,不管你把东西放在里面,袋子的大小都会保持不变。或者像Chris说的那样将矩阵声明为2*2 或改变 到
如果您想要任何大小的矩阵达到4*4,请使用第二种解决方案。如Chris所说,将矩阵声明为2*2 或改变 到
如果您想要任何大小不超过4*4的矩阵,请使用第二种解决方案。初始化数组不会更改数组的大小。如果要根据新的行和列大小进行打印,请将打印方法更改为:
public void print() {
for (int i = 0; i <= rows ; i++) {
for (int j = 0; j <= cols ; j++) {
System.out.print(data[i][j]);
}
System.out.println();
}
}
更好的做法是使字段私有,并为这些字段编写getter和setter方法。初始化数组不会更改数组的大小。如果要根据新的行和列大小进行打印,请将打印方法更改为:
public void print() {
for (int i = 0; i <= rows ; i++) {
for (int j = 0; j <= cols ; j++) {
System.out.print(data[i][j]);
}
System.out.println();
}
}
更好的做法是将字段私有化,并为这些字段编写getter和setter方法
public class Matrix {
public final double[][] values;
public final int rows;
public final int cols;
public Matrix(int rows, int cols) {
this.rows = rows;
this.cols = cols;
values = new double[rows][cols]; // Automatically 0.0.
}
public void print() {
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
System.out.printf(" %6f", values[i][j]);
}
System.out.println();
}
}
}
Matrix m = new Matrix(2, 2);
...
行和列是多余的,因为您已经使用了values.length和values[0].length。您可能需要这样的值
public class Matrix {
public final double[][] values;
public final int rows;
public final int cols;
public Matrix(int rows, int cols) {
this.rows = rows;
this.cols = cols;
values = new double[rows][cols]; // Automatically 0.0.
}
public void print() {
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
System.out.printf(" %6f", values[i][j]);
}
System.out.println();
}
}
}
Matrix m = new Matrix(2, 2);
...
行和列是多余的,因为您已经使用了values.length和values[0].length。一些注意事项:
使用IDE时,您的代码甚至没有编译,这是最低要求
你应该为任何问题付出努力。
将数组声明为double data[][]=new double[4][4];制作一个4盒宽4盒高的阵列。每个框将保存指定类型的数据,在您的情况下是一个设置为0.0的双精度数据
public class TestMatrix
{
int rows;
int cols;
double data[][] = new double[2][2];
public TestMatrix()
{
rows = 1;
cols = 1;
for (int i = 0; i <= rows; i++)
{
for (int j = 0; j <= cols; j++)
{
data[i][j] = 0.0;
}
}
}
public void print()
{
for (int i = 0; i < data.length; i++)
{
for (int j = 0; j < data[0].length; j++)
{
System.out.print(data[i][j] + " ");
}
System.out.println();
}
}
public static void main(String[] args)
{
TestMatrix m1 = new TestMatrix();
m1.print();
}
}
请注意:
使用IDE时,您的代码甚至没有编译,这是最低要求
你应该为任何问题付出努力。
将数组声明为double data[][]=new double[4][4];制作一个4盒宽4盒高的阵列。每个框将保存指定类型的数据,在您的情况下是一个设置为0.0的双精度数据
public class TestMatrix
{
int rows;
int cols;
double data[][] = new double[2][2];
public TestMatrix()
{
rows = 1;
cols = 1;
for (int i = 0; i <= rows; i++)
{
for (int j = 0; j <= cols; j++)
{
data[i][j] = 0.0;
}
}
}
public void print()
{
for (int i = 0; i < data.length; i++)
{
for (int j = 0; j < data[0].length; j++)
{
System.out.print(data[i][j] + " ");
}
System.out.println();
}
}
public static void main(String[] args)
{
TestMatrix m1 = new TestMatrix();
m1.print();
}
}
除上述答案外 我得到了4x4矩阵和所有的0 如果您想找到差异,请用下面的代码替换现有行
data[i][j] = 1.0;
System.out.print(data[i][j]+" ");
希望您理解除了上述答案之外,还获得所有0的原因 我得到了4x4矩阵和所有的0 如果您想找到差异,请用下面的代码替换现有行
data[i][j] = 1.0;
System.out.print(data[i][j]+" ");
希望您理解获得所有0的原因您的课程应该是这样的:
public class Test {
int rows;
int cols;
double data[][] = new double[2][2];
public void print() {
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data.length; j++) {
System.out.print(" "+data[i][j]+" ");
}
System.out.println();
}
}
public static void main(String[] args) {
Test m1 = new Test();
m1.print();
}
}
这部分你可以删除。你不需要它。这不是初始化
public void matrix() {
rows = 1;
cols = 1;
for (int i = 0; i <= rows; i++) {
for (int j = 0; j <= cols; j++) {
data[i][j] = 0.0;
}
}
}
你的班级应该是这样的:
public class Test {
int rows;
int cols;
double data[][] = new double[2][2];
public void print() {
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data.length; j++) {
System.out.print(" "+data[i][j]+" ");
}
System.out.println();
}
}
public static void main(String[] args) {
Test m1 = new Test();
m1.print();
}
}
这部分你可以删除。你不需要它。这不是初始化
public void matrix() {
rows = 1;
cols = 1;
for (int i = 0; i <= rows; i++) {
for (int j = 0; j <= cols; j++) {
data[i][j] = 0.0;
}
}
}
有任何理由来标记这个C++吗?我认为这个问题可以达到人们的FASTAG垃圾邮件是不赞成的,因为它可能吸引错误的人口来看待你的问题,它与标签无关。数组的内容不能决定长度。抱歉,EdCuthMulk标签这个C++的原因?我认为这个问题可能会影响到FASTAG垃圾邮件,因为它可能吸引错误的人口来看待你的问题,它与标签无关。数组的内容不能决定长度。YUP,抱歉EdChumsir,但是如果我想要3x3矩阵,那该怎么办?这可能只是暂时的解决办法。谢谢你,兄弟。想出另一个答案。请看下面我的答案杰克兄弟!!你的房间在哪里answer@Chandra:您需要重新声明您的阵列
不管怎样,如果你这样做并且想让它充满活力。或者使用ArrayList的ArrayList动态调整大小,但这可能会减慢速度。请在上一个列表下方找到它。先生,但如果我想要3x3矩阵怎么办。这可能只是暂时的解决办法。谢谢你,兄弟。想出另一个答案。请看下面我的答案杰克兄弟!!你的房间在哪里answer@Chandra:如果您这样做并希望其具有动态性,则无论如何都需要重新声明数组大小。或者使用ArrayList的ArrayList动态调整大小,但这可能会减慢速度。请在最后一个ArrayList下面找到它。完美杰克!!成功了!!谢谢你的快速回复。Thumsup@ChandraKishore我希望您应该在了解rows和colsPerfect Jack时初始化矩阵!!成功了!!谢谢你的快速回复。Thumsup@ChandraKishore我希望您应该在了解行和列的时候初始化矩阵!下针!UnderToodSir,如果我必须从另一个类传递数组的值呢。情况也是这样。为了从另一个类中获取数组的值,我应该在print函数中做哪些更改。情况也是这样。为了从另一个类获取数组的值,我应该在print函数中做什么更改?如果我必须从另一个类传递数组的值,该怎么办。情况也是这样。为了打印来自另一个类的数组值,我应该在print函数中做哪些更改?我不明白。你们是说在Main类中从Testmatrix类打印数据[][]吗?是的,如果我有一个包含元素的数组,在Main中是这样的。然后是m1.print;然后我应该得到一个矩阵的输出,它的值不是零,所以为了得到数组的值,我应该在print函数中做些什么更改。现在,目前我无法打印数值。只有当我执行这样的函数时,我才得到零-,双a[]={1.2,2.3,3.4,4,6.2,8.2,1.3,4.2};TestMatrix m3=新的TestMatrix X4,2,a;如果我必须从另一个类传递数组的值呢。情况也是这样。为了打印来自另一个类的数组值,我应该在print函数中做哪些更改?我不明白。你们是说在Main类中从Testmatrix类打印数据[][]吗?是的,如果我有一个包含元素的数组,在Main中是这样的。然后是m1.print;然后我应该得到一个矩阵的输出,它的值不是零,所以为了得到数组的值,我应该在print函数中做些什么更改。现在,目前我无法打印数值。只有当我执行这样的函数时,我才得到零-,双a[]={1.2,2.3,3.4,4,6.2,8.2,1.3,4.2};TestMatrix m3=新的TestMatrix X4,2,a;