这里有一段相当琐碎的Java代码..但是得到一个OutOfBoundsException,我不是很确定为什么?任何帮助都是最好的!
在有人问这是不是家庭作业之前,不是,这是为了准备考试。
import java.util.Scanner;
public class exampractice {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[] a = {1,2,3};
int min = a[0];
int max = a[0];
for (int i = 0; i <= a.length; i++){
if(a[i] < min)
min = a[i];
else
if(a[i] > max)
max = a[i];
}
System.out.println("Min is"+min+ "\nMax is: " + max);
}
}发布于 2011-06-03 03:07:55
它应该是<而不是<=。数组上从零开始的索引从0到length - 1变化。
更新
研究生院的一个人教我建立一个像这样的心理模式的集合,并使用它们;你可以避免bug。这一点是,类C语言中的任何数组总是被搜索为
for(index = 0; index < array.length ; index++)经过多年的训练,我第一眼就看到了这个bug,这就是我是如何走在队伍的前面的。
下面是C语言的更多例子:
char aString[MAXLENTH]; // declare a string array
char * aString ;
aString = (char *) malloc(MAXLENGTH]; // or malloc it
// constructing a string with catenation
aString[0] = '\0'; // now either way this is guaranteed an empty string当然,我应该使用另一种模式:
if((aString = (char *) malloc(MAXLENGTH) == NULL){
// report out of memory
exit(BAD);
}想一想其他什么模式可能是好的。
发布于 2011-06-03 03:08:23
数组使用基于0的计数,并且在for循环中使用i<= a.length,这意味着您将访问一个不存在的元素。只需删除=和您的good即可。
for (int i = 0; i < a.length; i++)发布于 2011-06-03 03:08:08
for (int i = 0; i <= a.length; i++)应该是
for (int i = 0; i < a.length; i++)https://stackoverflow.com/questions/6219144
复制相似问题