Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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 数组indexoutofboundsException:3_Java_Arrays_For Loop_Indexoutofboundsexception - Fatal编程技术网

Java 数组indexoutofboundsException:3

Java 数组indexoutofboundsException:3,java,arrays,for-loop,indexoutofboundsexception,Java,Arrays,For Loop,Indexoutofboundsexception,无法理解为什么我的int[]totalOpen=newint[n][n]数组连续越界异常:3。我的公共静态空隙开放系数(char[][]mazeValue,int n)方法的计算工作正常;但是,在我的openfactor(char[][]mazeValue,int n)中的以下两行上,我得到了一个数组索引越界错误。我似乎永远无法通过整个数组,甚至无法接近。请帮忙!:) import java.util.*; 公开课游戏{ 公共静态void main(字符串[]args){ 扫描仪kbd=新扫描

无法理解为什么我的
int[]totalOpen=newint[n][n]数组连续越界异常:3。我的
公共静态空隙开放系数(char[][]mazeValue,int n)
方法的计算工作正常;但是,在我的
openfactor(char[][]mazeValue,int n)
中的以下两行上,我得到了一个数组索引越界错误。我似乎永远无法通过整个数组,甚至无法接近。请帮忙!:)

import java.util.*;
公开课游戏{
公共静态void main(字符串[]args){
扫描仪kbd=新扫描仪(System.in);
System.out.println(“输入一个整数:”);
int n=kbd.nextInt();
char[]mazeValue=新字符[n+1][n+1];
System.out.println(“输入路径:”);
对于(int i=0;i=1)
{
if(mazeValue[i-1][j-1]='O')
计数++;
}
//System.out.println(“cout:+count”);
如果(i-1>=1)
{
if(mazeValue[i-1][j]='O')
计数++;
}
//System.out.println(“cout:+count”);
如果(j+1看:

抛出以指示已使用非法索引访问数组。索引为负数或大于或等于数组的大小

您正在对java数组使用基于1的索引,java数组使用基于0的索引():


不幸的是,
for
循环中的逻辑似乎也采用了基于1的索引,因此您也必须更改它。

我使用1,因为我的当前数组周围有一个X值的边界。如果我从0开始,它将只存储我的边界的一部分,不是吗?是的,它只存储我的边界。然后您需要在中声明它为
t[]TotalOpen=新整数[n+1][n+1]
,在这种情况下,索引将是
0,1,…,n
。无论哪种方式,java数组索引都是基于0的,因此最大索引比长度少一个。我这样做了,它确实起作用,它保持在边界内,但这样做会导致它存储我的不可见边界。这就是我的方法,它仍然保持存储不可见边界。
totalOpenness[i][j] = openness;
System.out.println("TOTAL OPENESS FOR : [" + i + "]" +"[" + j + "]  IS " +totalOpenness[i][j]);
for(int i = 1; i<=n; i++)
  for(int j=1;j<=n;j++)
for(int i = 0; i < n; i++)
  for(int j = 0; j < n; j++)