2014-02-21 27 views
0

每次我調用getIndex MyClass的靜態方法在屏幕上打印「Index:1」。我想增加或減少指數的價值。我的代碼有什麼問題?爲什麼每次我打電話時我的靜態變量的值都會改變?

public class MyClass 
{ 
    public static int index=0; 

    public static void getIndex() 
    { 
     index++; 
     System.out.println("Index:"+index); 
     if(index>10) 
      index=0; 
    } 
} 
+0

你不應該增加index'的'值在吸氣,其實是奇數修改getter方法的字段。國際海事組織你不應該把它作爲靜態字段,getIndex方法也不應該是靜態的。 –

+6

'getIndex(); getIndex(); getIndex();'它打印1,2,3。呃......我很困惑。 –

+3

使'index''private'並重新編譯您的代碼,以檢測客戶端代碼的意外修改。 – hmjd

回答

2

當我添加代碼來調用您的例子它的工作原理像您期望:

public class MyClass 
{ 
    public static int index=0; 

    public static void getIndex() 
    { 
     index++; 
     System.out.println("Index:"+index); 
     if(index>10) 
      index=0; 
    } 

    public static void main(String[] args) { 
     for (int i = 0; i < 12; i++) { 
      getIndex(); 
     } 
    } 
} 

印刷:

Index:1 
Index:2 
Index:3 
Index:4 
Index:5 
Index:6 
Index:7 
Index:8 
Index:9 
Index:10 
Index:11 
Index:1 

到控制檯。所以你怎麼稱呼這一定是問題所在。

+0

是的,問題是我如何調用該方法..謝謝。 – onivi

1

一個猜測:你只在程序中調用getIndex()一次,但然後運行該程序幾次。那不行;變量值不保存在程序的實例中。每次啓動程序時,index程序的一次運行中getIndex()多次被重置爲0打電話來,你會看到它增加如您所願。

相關問題