其實這學期的java課開了將近四星期了,加上開學前的小小預習。編寫不下於二十幾個java了。
可這一有關swap()方法的java確實是首次迷惑不解到處尋求解決的程序。
課堂上老師有關類、方法、對象的講解還沒消化的時候編寫swap()就把我繞得更暈了。
原題如下:
已知如下一個類:
class A
{
int a1,a2;
A(int i, int j)
{ a1= i; a2 = j;}
}
要求編一個方法swap()用來交換A類的兩個對象的成員變量的值。
一番折騰之后的代碼:
class A { int a1,a2; A(int i,int j) {a1=i;a2=j;} public void swap() /*swap函數無形參 */ { int m; m=a1;a1=a2;a2=m; } public static void main(String args[]) { A pt=new A(2,4); System.out.println("a1= "+pt.a1+",a2= "+pt.a2); pt.swap(); System.out.println("a1= "+pt.a1+",a2= "+pt.a2); } }
結果正確。
之前失敗代碼遺失,不能對比。
但我清楚記得之前是糾結在swap()的形參上面,一面知道按值傳遞無法交換(根據C帶出來的想法,但對與解釋概念不清),一面用復雜類型(類、數組、接口)中的類,又總是指代不清,頻頻受阻。還有,就是成員變量a1,a2的作用域、構造方法對對象的初始化作用。
總結程序失敗原因:首先概念理解不清晰,理不清相互關系;再者開始時對待問題的思路亂,知道一點就往上湊,從簡單的角度切入問題有助解決問題。