作者H45 (!H45)
看板java
标题Re: [问题] non-static问题
时间Thu May 14 04:29:14 2009
※ 引述《jimpop (popmij)》之铭言:
: ※ 引述《TonyQ (沉默是金)》之铭言:
: : 应该这麽说 , 你根本就没搞清楚你的问题...-_-;;
: : static 函式无法存取非 static 成员(也就是 instance 成员) ,
: : 但是非 static 函式可以存取 static 成员 ,
: : 所以从 instance 改成 static 是绝对不可能造成更多的无法存取的问题.
: : (但有可能会盖到同一继承树成员同名的变数 , 但这不在你的问题范围.)
: : 还有如果我没误会 , 你所谓的"用static整个框起来"
: : 你说得应该是
: : static{
: : int arr[]={0,1,2};
: : }
: : 这跟 static int arr[]={0,1,2}; 完全是两回事 -_-
: : 如果你想赶快解决问题 , 问题跟环境的描述多一点 ,
: : 多余的臆测跟先入为主的成见 , 建议保守一点比较好.
: 嗯~那我把我的码po出来~
: 小小说明一下~
: 这是出问题的地方
: 在这上面有这六个物件~我"猜"应该不是重点
: 在程式一开始定义这六个物件
: 因我想比较它们谁最大
: 我就把它们全部存入一维阵列
: 然後再来比较
: 我的最大问题是:
: 要怎麽弄才能让arr[]这个顺利完成并让larger函数使用!?
: 那个递回也许有逻辑错误~但想先把这问题弄好再来想~~
: 谢谢T大的指引
: 我确实是static{}这样@@
: public class a1
: {
: int r1=3,r2=5;
: CCircle a1=new CCircle();
: CTriangle a2=new CTriangle();
: CSquare a3=new CSquare();
: CCircle2 b1=new CCircle2();
: CTriangle2 b2=new CTriangle2();
: CSquare2 b3=new CSquare2();
: double arr[]={a1.area(r1),a2.area(r1,r2),a3.area(r1),b1.area(r1),b2.area(r1,r2),b3.area(r1)};
: public static void main(String args[])
: {
: System.out.println(larger(0,5,0));
: }
: public static double larger(int i,int a,int b)
: {
: if((i-1)==a)return b;
: else
: {
: if(arr[i]>arr[i+1])return larger(i+1,a,i);
: else return larger(i+1,a,i+1);
: }
: }
: }
改成这样:
public class a1 {
int r1 = 3, r2 = 5;
CCircle a1 = new CCircle();
CTriangle a2 = new CTriangle();
CSquare a3 = new CSquare();
CCircle2 b1 = new CCircle2();
CTriangle2 b2 = new CTriangle2();
CSquare2 b3 = new CSquare2();
double arr[]={
a1.area(r1), a2.area(r1,r2), a3.area(r1),
b1.area(r1), b2.area(r1,r2), b3.area(r1)
};
public static void main(String args[]) {
// 创造 a1 类之物件 a
a1 a = new a1();
// 印出 a 物件之 larger 方法所回传的数字
System.out.println(a.larger(0,5,0));
}
// 删掉 static
public double larger(int i,int a,int b) {
if((i-1)==a) return b;
else {
if(arr[i]>arr[i+1]) return larger(i+1,a,i);
else return larger(i+1,a,i+1);
}
}
}
但是没有提供 CCircle, CTriangle, CSquare, CCircle2, CTriangle2, CSquare2
叫我们怎麽编译.....
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.33.235.24
1F:推 TonyQ:你跟我刚刚碰到的状况一样 XDDDDDDDDDDDDDDDDD 05/14 05:19
2F:推 jimpop:抱歉~因反覆找寻後~问题在於这个non-static~所以就没po上来 05/14 14:18
3F:推 jimpop:谢谢H大这个方法~~看来我的java还没进入状况@@得多多学习~~ 05/14 14:21