当前位置: 首页 > 知识库问答 >
问题:

如何在Java中将值从2d数组复制到新的更大数组?

马臻
2023-03-14

如何将2d数组复制到新的更大的数组中,以便在新数组中添加更多项目,同时仍然具有原始数据?我的代码使越界失败 - 我的错误是什么?我试图说复制数组应该是原始数组.length x - 但不起作用。

导入Java . util . scanner;//将扫描仪导入程序

公共类TestTest{

// Declaring Scanner object.

public static Scanner userInput = new Scanner(System.in); 

public static void main(String[] args) {
    
    // Variables
    
     int number = 1;
     
    // Declaring 2d Array
     
     int[][] myArray = new int [3][3];
     
     // Loop values into the array
     
     for(int i =0; i<myArray.length; i++) 
     {
         myArray[i][0]= number;
         number++;
         
         myArray[i][1]= (int) (Math.random () * 10) +1;
         myArray[i][2]= (int)(Math.random() * ((1000 - 100) + 1)) + 100;         
         
     }
     
     // Print the original array
     
     System.out.println("This is original array:");
     
     for(int i =0; i<myArray.length; i++) 
     {
         
         
      System.out.println(myArray[i][0]+" " + myArray[i][1]+" "+ myArray[i][2]);
             
         
     }
     
     // Make a copy of the original array and expand the length with 3.
     
      int[][] copyArray =new int[myArray.length+3][3];
      
      for (int i = 0; i < copyArray.length; ++i) 
      {
        copyArray[i] = new int[myArray[i].length];
         
        
         for (int j = 0; j < copyArray[i].length; ++j) 
         {
            copyArray[i][j] = myArray[i][j];
         }
         
      }
      
     
     
      
      
      // Print the copy
      
      System.out.println("This is the copy:");
      
      
      for (int i = 0; i < copyArray.length+3; ++i) 
      {
          
        System.out.println(copyArray[i][0]+" " + copyArray[i][1]+" "+ copyArray[i][2] ); 
          
         
      
      }
      
      
      
      
      
      
      
      
      
 

}

}

共有1个答案

禄俊逸
2023-03-14

你得到 ArrayIndexOutOfBounds 是因为 array copyArray 的长度大于你的源数组 myArray

因此,当indexi超过源数组的长度时,该行将导致异常:

copyArray[i] = new int[myArray[i].length];

因为< code>myArray[i]不会引用嵌套数组。

 类似资料:
  • 问题内容: 我有一个二维数组,称为int类型的矩阵,我想用一种方法将其复制到局部变量,以便我可以对其进行编辑 什么是复制阵列的最佳方法,我遇到了一些麻烦 例如 问题答案: 有两种复制数组的好方法是使用clone和。 这是在2D情况下如何使用克隆的方法: 对于System.arraycopy(),你可以使用: 我没有基准,但是我可以用我的2美分打赌,它们比你自己做的更快,更不容易出错。特别是,它是用

  • 我有这样的家庭作业问题: 以下数据表示地震的里氏标度数据。编写一个程序来计算和打印任何有效地震数据的平均值。 将里氏震级值存储在名为quakeLevels的双精度数组中。 不幸的是,已知您的地震仪有时会产生不可靠的读数(例如本例中的值10.1)。因此,您决定抛弃最大和最小读数。 您的程序应执行以下操作: 使用以下数据声明并初始化 quakeLevels 数组。{ 5.6, 6.2, 4.0, 5.

  • 问题内容: 我只是在数组上使用过,以为这是一个深复制。 如何执行阵列的深层复制? 我应该遍历它并执行一系列的操作吗? 问题答案: 是的,你应该遍历2D布尔数组以进行深复制。如果你使用的是Java 6,请同时查看方法。 我建议使用Java 6的下一个代码:

  • 问题内容: 我想输出二维数组的最大值和最小值。Max可以很好地工作,但是即使在数组中没有零的情况下min也总是输出零。在本例中,我设置为99以防止较小的机会在数组中获得零。继承人完整代码: 问题答案: 由于您在中选择随机值的方式,不会存在小于零的值- 但也无法保证任何值都将恰好为零。但是,您将初始化为零,因为这是数组元素的默认值;没有什么比这更小了,所以答案总是零。 您应该在标记为“查找最小值”的

  • 问题内容: 我想更新一个数组值,但我不确定要执行的正确方法,因此我尝试了以下方法,但没有为我工作。 我的模型,我模型中的子域 我的查询 谁能给我帮助。谢谢。 问题答案: 你不能同时使用 ,并 在相同的更新表达式作为嵌套的运营商。 使用更新运算符的正确语法如下: 在那里可以来自任何指定的更新列表运营商的位置。 要将一个新元素添加到数组中,只需一个 运算符即可,例如,您可以使用 update方法将修改

  • 问题内容: 我需要以下程序的帮助: “编写一种将二维双精度数组作为输入参数并返回数组元素平均值的方法。” 谁能告诉我该怎么做? 我当前的代码: 我不知道如何让用户输入数组元素和数组尺寸(行/列)。另外,如何从main调用此方法?我遇到错误。 问题答案: 试试这个: 码: 输出: