其实这学期的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的作用域、构造方法对对象的初始化作用。
总结程序失败原因:首先概念理解不清晰,理不清相互关系;再者开始时对待问题的思路乱,知道一点就往上凑,从简单的角度切入问题有助解决问题。