Java数组越界问题实例解析数组越界问题实例解析
主要介绍了Java数组越界问题实例解析,具有一定参考价值,需要的朋友可以了解下。
Java中数组初始化和OC其实是一样的,分为动态初始化和静态初始化,
动态初始化动态初始化:指定长度指定长度,由系统给出初始化值由系统给出初始化值
静态初始化静态初始化:给出初始化值给出初始化值,由系统给出长度由系统给出长度
在我们使用数组时最容易出现的就是数组越界数组越界问题,好了,这里有个简单的例子
int [][] array = {{1,2,3},{1,4}};
System.out.println(array[1][2]);
这是一个二维数组,很明显,数组越界了,控制台中会打印如下信息:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at demo.Array.main(Array.java:31)
很准确的定位到31行。
下面看看一个完整的代码示例:下面看看一个完整的代码示例:
package home_work_4_17;
abstract class Employee{
abstract double earnings();
}
class YearWorker extends Employee{
double earnings(){
System.out.println("按年领取1000");
return 1000;
}
}
class MonthWorker extends Employee{
double earnings(){
System.out.println("按月领取100");
return 100;
}
}
class WeekWorker extends Employee{
double earnings(){
System.out.println("按星期领取10");
return 10;
}
}
class Company{
int n;
//该公司的人数
public Company(int n) {
this.n=n;
// TODO Auto-generated constructor stub
}
Employee E[]=new Employee[n];
double cal(){
//返回薪水综合
double sum=0;
for (int j=0;j<n;j++){
sum+=E[j].earnings();
}
return sum;
}
}
public class work_2 {
public static void main(String args[]) {
Company c=new Company(3);
c.E[0]=new WeekWorker();
c.E[1]=new MonthWorker();
c.E[2]=new YearWorker();
System.out.println("总支出:"+c.cal());
}
}
编译器显示数组越界错误。
经检查发现划线部分语句出错
评论0