Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取从一个类到另一个类的数组长度_Java_Arrays_Matrix - Fatal编程技术网

Java 获取从一个类到另一个类的数组长度

Java 获取从一个类到另一个类的数组长度,java,arrays,matrix,Java,Arrays,Matrix,我需要从另一个类获取数组长度的帮助。i、 例如,将数组的长度从一个类传递到另一个类。问题就在这里 Testmatrix.java 构造器中的一切似乎都是正确的。但问题是打印功能。数据的大小应为2。但是它的值是4,声明的值是初始化的。有人帮我解决这个问题。我需要打印所有0的2x2矩阵,但我要打印所有0的4x4矩阵 提前感谢**您将阵列声明为4x4矩阵。第4行应为双精度数据[][]=新双精度[2][2];为了达到您想要的效果。您将阵列声明为4x4矩阵。第4行应为双精度数据[][]=新双精度[2][2

我需要从另一个类获取数组长度的帮助。i、 例如,将数组的长度从一个类传递到另一个类。问题就在这里

Testmatrix.java

构造器中的一切似乎都是正确的。但问题是打印功能。数据的大小应为2。但是它的值是4,声明的值是初始化的。有人帮我解决这个问题。我需要打印所有0的2x2矩阵,但我要打印所有0的4x4矩阵


提前感谢**

您将阵列声明为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;