如果语句不能解决数组超出范围的异常

时间:2018-12-03 18:43:02

标签: java arraylist

int loc = 0 ;
int place = loc*3+1;
ArrayList<String> map = new ArrayList<String>( 
        Arrays.asList("|"," ","|\n",    "|"," ","|\n",    "|"," ","|\n",    
"|"," ","|\n", " ‾\n"));

上面是我的数组列表和一些变量,用于跟踪数组列表内空格的位置。 Arraylist的目的是在打印时创建一个小地图。该地图如下所示。可以在1、4、7和10处的每三个索引值中找到可以在其中找到字符的空格。

| |
| |
| |
| |
 ‾

我遇到问题的方法如下。其目的是检查字符“上方”是否存在空格。如果有空格,它将返回单词North;如果没有空格,则应返回否。

 public static String moveN( ArrayList<String> map, int place){
  String movenorth = "";
  String positionvalue = map.get(place-3);

if (place-3 <= 0){
  movenorth = "No";
} else {
   if (positionvalue.equals(" "))
        movenorth = "North"; 
}
 return(movenorth);
}

返回而不是不返回

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -2

如果我的if语句显然无法按我希望的那样工作,我将如何解决这个问题。

2 个答案:

答案 0 :(得分:0)

您的if工作正常,但由于以下原因而引发异常:

String positionvalue = map.get(place-3);

在获取位置值之前,请确保检查您是否未访问界外索引。

答案 1 :(得分:0)

从该消息中,它看起来像place = 1,并且当您执行place-3时,它正在尝试执行Cannot stat '/home/dev/app/app-name/current/passenger_wsgi.py': Permission denied (errno=13); 。您可能应该进行边界检查,使其在开始{{1 }}