亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java數組越界的示例分析

發布時間:2021-08-04 10:12:19 來源:億速云 閱讀:184 作者:小新 欄目:編程語言

小編給大家分享一下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());
	}
}

編譯器顯示數組越界錯誤。

經檢查發現劃線部分語句出錯

應當做如下修改:

class Company{
  int n;  //該公司的人數
   Employee E[]; 
  public Company(int n) {
    this.n=n;// TODO Auto-generated constructor stub
    E=new Employee[n];  
   }
  double cal(){    //返回薪水綜合
    double sum=0;
    for(int j=0;j<n;j++){
      sum+=E[j].earnings();
    }
    return sum;
  }
}

出錯原因是:當Company構造方法中并未對數組E進行初始化操作,故而E數組大小仍然為0,發生數組越界錯誤。

利用上述錯誤方式編寫的測試程序如下:

package test_a;
class people{
  int n;
  Student s[]=new Student[n];
  public people(int n) {
    this.n=n;// TODO Auto-generated constructor stub
  }
}
class Student{
  int number;
}
public class Cdcs {
  public static void main(String args[]) {
    people p=new people(3);
    System.out.println(p.s.length);
  }
}

輸出結果為0。即數組大小為零。

以上是“Java數組越界的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天等县| 易门县| 阳江市| 鄂托克前旗| 金华市| 马鞍山市| 白玉县| 天津市| 沙河市| 怀柔区| 眉山市| 东台市| 嵩明县| 绥滨县| 黄平县| 长汀县| 万宁市| 泸定县| 洮南市| 昌宁县| 和静县| 襄垣县| 铁力市| 荣成市| 齐河县| 长葛市| 吉水县| 南康市| 临泉县| 洪雅县| 团风县| 平乡县| 元谋县| 芜湖市| 宁国市| 手游| 姚安县| 威海市| 鸡东县| 富民县| 余姚市|