Java 添加锯齿数组初学者

Java 添加锯齿数组初学者,java,arrays,jagged-arrays,Java,Arrays,Jagged Arrays,我是一名java初学者,擅长解决以下问题: 我试图将两个大小相同的锯齿状数组(n和m,都是双[][])相加(第一级的每个数组长度为3,第二级的数组长度分别为x-1、x和x-1) 我遇到的问题是指定交错数组中每个数组的长度,此时我的代码正在生成一个nxn数组,因为我将长度指定为n[1],而不是作为参数,但如果我尝试使用sum[I].length=n[I]。length我会得到错误,“无法将值赋给最终变量”。所以我知道这部分是错的,但我不知道什么是对的 谢谢你的帮助 我的代码: else if (i

我是一名java初学者,擅长解决以下问题:

我试图将两个大小相同的锯齿状数组(n和m,都是双[][])相加(第一级的每个数组长度为3,第二级的数组长度分别为x-1、x和x-1)

我遇到的问题是指定交错数组中每个数组的长度,此时我的代码正在生成一个nxn数组,因为我将长度指定为n[1],而不是作为参数,但如果我尝试使用sum[I].length=n[I]。length我会得到错误,“无法将值赋给最终变量”。所以我知道这部分是错的,但我不知道什么是对的

谢谢你的帮助

我的代码:

else if (isValidTridiagonal(m)== true && isValidTridiagonal (n) == true)
{
    int size = n[1].length; /** specifying all lengths to be x where they shouldnt be*/
sum = new double[3][size];

for (int i = 0; i < n.length; i++)
{
    for(int j = 0; j< n[i].length; j++)
    {
        sum [i][j]= n[i][j] + m [i][j];
    }
}
return sum;
else if(isvalidtridagonal(m)=true&&isvalidtridagonal(n)=true)
{
int size=n[1].length;/**指定所有不应为x的长度*/
总和=新的双倍[3][大小];
for(int i=0;i

}缺少一些信息。据我所知,有两件事你需要解决。您似乎已经在代码中定义了“sum”作为最终变量

其次,您要声明一个3xsize大的新数组。如果你想要一个参差不齐的数组,你必须把其中一个括号留空,然后在第一个循环中插入一个新的数组

double[][] sum = new double[3][]; //Make sure this is unique within the scope
for(int i = 0; i < 3; i++) { //if you want dynamic scaling you'll need to replace 3 in the array as well.
    int size = n[i].length; //size of the new row
    sum[i] = new double[size]; // Inserting a new array of the wanted size
    for(int j = 0; j< sum[i].length; j++) 
    {
        sum[i][j]= n[i][j] + m[i][j]; 
    }
}
return sum;
double[]sum=新的double[3][]//确保这在范围内是唯一的
对于(inti=0;i<3;i++){//如果需要动态缩放,还需要替换数组中的3。
int size=n[i].length;//新行的大小
sum[i]=new double[size];//插入所需大小的新数组
对于(int j=0;j
问题可能出在这一行:

sum = new double[3][size];
这里您创建了一个不正确的非锯齿数组,大小为[3][2]

当您尝试设置总和[1][2](第二、第三个索引)时,您将无法

否则,代码看起来是正确的,我使用以下方法得到了一个总数:

public static void main(String[] args) {
  int[][] n = new int[3][];
  n[0] = new int[2];
  n[0][0] = 1;
  n[1] = new int[3];
  n[2] = new int[2];

  int[][] m = new int[3][];
  m[0] = new int[2];
  m[1] = new int[3];
  m[1][2] = 1;
  m[2] = new int[2];

  int[][] sum = new int[3][];
  sum[0] = new int[2];
  sum[1] = new int[3];
  sum[2] = new int[2];

  for (int i = 0; i < n.length; i++) { // n.length will be 3
    for (int j = 0; j < n[i].length; j++) { // n[i].length will be 2, 3 and 2
      sum[i][j] = n[i][j] + m[i][j];
    }
  }

  System.out.println("Sum: ");
  for (int i = 0; i < sum.length; i++) {
    for (int j = 0; j < sum[i].length; j++) {
      System.out.print(sum[i][j] + "|");
    }
    System.out.println();
  }
}

您可能希望包含变量声明。看起来你已经问了这个问题(并且它作为一个副本关闭了),很高兴我能帮上忙!:)
Sum: 
1|0|
0|0|1|
0|0|