為什么這里陣列沒有轉置呢?代碼沒有報錯,就是沒有轉置。
public class ShuZuJiCheng{
public static void main (String args []) {
/*
* 驗證:
*/
//實體化物件,并通過構造方法傳遞陣列的長度
ArrayTransposition ar = new ArrayTransposition (8) ;
//呼叫assign方法為陣列中的每個元素賦值
ar.assign(66);
ar.assign(22);
ar.assign(55);
ar.assign(33);
ar.assign(99);
ar.assign(11);
ar.assign(88);
ar.assign(77);
//繼續呼叫add方法擴充陣列范圍
ar.add(2);
ar.assign(44);
ar.assign(100);
//呼叫getArr方法取得賦值后的陣列
for (int i = 0 ; i<ar.getArr().length ;i++) {
System.out.print(ar.getArr()[i] + "、");
}
}
}
//定義一個Array類,讓物件能過動態取得擴充一個陣列
class Array{
//宣告陣列
private int arr [] ;
//宣告一個int變數index,表示訪問陣列的索引。不能用for回圈,因為訪問陣列索引的方法物件呼叫時會重復訪問
//如果設定for回圈,每次物件呼叫此方法時,都會進行回圈,這樣只會賦值物件最后一次呼叫時的值
private int index ;
//利用構造方法賦予陣列的長度和每個元素的值
public Array(int len) {
//要求傳入的長度不能小于0
if (len<0) {
this.arr= new int [1];
}
this.arr = new int [len] ;
}
//設定方法取得陣列中的每個元素,引數為每個物件呼叫時賦值的數字
public void assign(int num) {
//要求索引在++運算后不能大于等于陣列長度
if (index <this.arr.length) {
this.arr[index++] = num ;
}
}
//若還想擴充陣列的長度和元素,可以定義以下方法
public void add (int plus) {
int data [] = new int [this.arr.length + plus] ;
System.arraycopy(this.arr, 0, data, 0, this.arr.length);
this.arr = data ;
}
//設定一個方法來獲取陣列中的每個元素
public int [] getArr() {
return this.arr ;
}
}
//定義一個子類使Array類的陣列具有轉置的功能
class ArrayTransposition extends Array {
//因為子類實體化物件前會呼叫父類的構造方法實體化父類物件,且如父類的構造器中有引數,則必須要明確用super()方法
//呼叫父類的構造器
public ArrayTransposition (int len) {
super(len) ;
}
//需要一個方法來轉置陣列,并且可以得到轉置后陣列的值,得到陣列的值父類中的getArr方法已經可以做到
//所以,可以采取覆寫此方法來擴充此方法,因為方法覆寫的作用就是擴充方法的功能
public int [] getArr() {
int time = super.getArr().length / 2 ;
int head = 0 ;
int tail = super.getArr().length - 1 ;
for (int i = 0 ;i<time ;i++) {
int middle = super.getArr()[head] ;
super.getArr()[head] = super.getArr()[tail] ;
super.getArr()[tail] = middle ;
head ++;
tail --;
}
return super.getArr();
}
}輸出結果還是:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/120130.html
標籤:Java相關
上一篇:關于eclipse編譯出錯的問題
下一篇:555
