Re: [問題] non-static問題
※ 引述《TonyQ (沉默是金)》之銘言:
: ※ 引述《jimpop (popmij)》之銘言:
: : 標題: [問題] non-static問題
: : 時間: Thu May 14 03:01:15 2009
: : 我有個架構如下
: : 這樣子會出現 non-static問題
: : 也就是在 nn這個函數中無法使用arr[]這個陣列
: : 想問要如何寫arr[]只要定義一次
: : nn函數可以直接使用呢!?
: : 我知道定義在nn函數中就可以了~
: : 但我真正架構nn是個遞迴
: : 這樣效率感覺很差~
: : 想問這要該怎麼改寫呢!?
: : --
: : ◆ From: 125.229.95.163
: : 推 TonyQ:直接寫 static int arr[]={0,1,2}; 就好啦 -_-;; 05/14 03:02
: : → jimpop:應該這麼說~~陣列內容是其它類別的資料~~如果arr[]用static 05/14 03:08
: : → jimpop:會跑出更多的non-static~~我有試過static整個框起來~但不行 05/14 03:10
: 應該這麼說 , 你根本就沒搞清楚你的問題...-_-;;
: 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);
}
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.229.95.163
討論串 (同標題文章)