2014-02-21 29 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打电话来,你会看到它增加如您所愿。

相关问题