尝试在java中显示两个Dimensional数组内容

尝试在java中显示两个Dimensional数组内容,java,Java,我是java新手。我希望打印两个dimensional数组中的内容,即myPoints。但是,当我打印代码时,它抛出了以下错误 mypoints4 i value is 0 2 i value is 1 5 i value is 2 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 at perceptron.main(perc

我是java新手。我希望打印两个dimensional数组中的内容,即myPoints。但是,当我打印代码时,它抛出了以下错误

 mypoints4
 i value is 0
 2
 i value is 1
 5
 i value is 2
  Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:                             
  2 at perceptron.main(perceptron.java:37)



 import java.util.*;
 import java.io.*;
 import java.text.*;
 import java.math.*;
 import java.awt.*;
 class perceptron{

   public static void main(String[] args){
     int[][] myPoints = {{2,3},{4,5},{7,8},{9,10}};
     int [][] myplot  = {{3,4},{5,6},{5,5},{5,3}};
     int sum=0;
     int i=0;
     System.out.println("mypoints"+myPoints.length);
     while(i<=myPoints.length){
       System.out.println("i value is"+i);
       System.out.println(myPoints[i][i]);
       i = i+1;
     }
   }
 }
mypoints4
i值为0
2.
i值为1
5.
我的值是2
线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:
2位于perceptron.main(perceptron.java:37)
导入java.util.*;
导入java.io.*;
导入java.text.*;
导入java.math.*;
导入java.awt.*;
类感知器{
公共静态void main(字符串[]args){
int[]myPoints={{2,3},{4,5},{7,8},{9,10};
int[]myplot={{3,4},{5,6},{5,5},{5,3};
整数和=0;
int i=0;
System.out.println(“mypoints”+mypoints.length);

while(iwhile循环的条件必须是“小于”而不是“小于或等于”。
这是因为数组索引是基于零的,因此索引范围总是从0到(长度-1)。

这是因为
while(i需要使用嵌套循环)。
获取ArrayIndexOutOfBoundsException的原因是,您使用的是
myPoints[i][i]
,因此当
i
为2时,它将查找第三个内部数组(即
{7,8}
)中不存在的第三个元素

  • 您将增加(包括)外部数组的长度。这是一个数组索引越界,因为长度
    n
    的数组的索引是
    0…(n-1)
    。因此尝试访问索引
    n
    是越界的

  • 您正在访问索引
    i
    处的子数组,这对于以后的子数组是不允许的。这对于方形矩阵(您可以向下读取对角线)是有效的,但是您的矩阵是4*2,因此
    myPoints[2][2]
    是OOB,因为您无法访问长度
    2
    数组
    {7,8}
    的索引
    2

  • 迭代二维数组中每个元素的最简单方法是必须有一个嵌套循环,如下所示:

    for(int i = 0; i < myPoints.length; i++){
        for(int j = 0; j < myPoints[i].length; j++){
            System.out.println(myPoints[i][j]);
        }
    }
    
    更简洁的方法是使用以下方法:

    for(int i = 0; i < myPoints.length; i++){
        for(int j = 0; j < myPoints[i].length; j++){
            System.out.println(myPoints[i][j]);
        }
    }
    
    for(int[] row : myPoints){
        for(int val : row){
            System.out.println(val);
        }
    }
    
    System.out.println(Arrays.deepToString(myPoints));