尝试在java中显示两个Dimensional数组内容
我是java新手。我希望打印两个dimensional数组中的内容,即myPoints。但是,当我打印代码时,它抛出了以下错误尝试在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
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));