其實這學期的java課開了将近四星期了,加上開學前的小小預習。編寫不下于二十幾個java了。
可這一有關swap()方法的java确實是首次迷惑不解到處尋求解決的程式。
課堂上老師有關類、方法、對象的講解還沒消化的時候編寫swap()就把我繞得更暈了。
原題如下:
已知如下一個類:
class A
{
int a1,a2;
A(int i, int j)
{ a1= i; a2 = j;}
}
要求編一個方法swap()用來交換A類的兩個對象的成員變量的值。
一番折騰之後的代碼:
classA {inta1,a2;
A(int i,intj)
{a1=i;a2=j;}public void swap() {intm;
m=a1;a1=a2;a2=m;
}public static voidmain(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的作用域、構造方法對對象的初始化作用。
總結程式失敗原因:首先概念了解不清晰,理不清互相關系;再者開始時對待問題的思路亂,知道一點就往上湊,從簡單的角度切入問題有助解決問題。