-3

我认为这可能是一个简单的问题,但我有一个类有一个私有静态 int 变量,该变量在类中递增,我想在第二个类中显示这个值。但是,即使它已经增加,它也会继续打印出 0。

相同的代码将是

public class Test{

      private static int toIncrement;

      public static int returnValue{
          return toIncrement;
      }

      public void test{
         for(int i = 0; i < 4; i++){
               toIncrement++;
         }
      }
 }

所以上面的代码运行,然后从另一个类我调用 Test.returnValue(); 这将返回 0

4

4 回答 4

0

所以上面的代码运行,然后从另一个类我调用 Test.returnValue(); 这将返回 0

当您说上面的代码运行时,并不意味着您的test方法将自动执行,而不会从任何地方调用。如果您test先调用您的方法,然后尝试获取该值,Test.returnValue()则该值不应为 0。

于 2013-08-16T01:15:15.617 回答
0

叹。我从哪里开始?

public void test{
  for(int i = 0; i < 4; i++){
        toIncrement++;
  }
}

那不是构造函数。它需要被void移除。由于缺少括号,这甚至无效。

public static int returnValue{
  return toIncrement;
}

再次,括号。

private static int toIncrement;

public static int returnValue{
    return toIncrement;
}

这真的是静态的吗?要么将其设为静态,然后调用,要么将其设为Test.test()非静态并正确调用构造函数。

于 2013-08-16T01:15:59.953 回答
0

使用静态块!

public class Test{

      private static int toIncrement;

      public static int returnValue(){
          return toIncrement;
      }

      static {
         for(int i = 0; i < 4; i++){
               toIncrement++;
         }
      }
 }
于 2013-08-16T01:31:39.100 回答
0

您忘记了方法中的参数括号。应该:

public class Test{

    private static int toIncrement;

    public static int returnValue(){
    return toIncrement;
    }

    public void test(){
    for(int i = 0; i < 4; i++){
        toIncrement++;
    }
}

但是看到你没有在任何地方调用 test(),我假设你认为它是一个构造函数。为了使它的构造函数删除“void”所以它只是:

public test()
{
    code here
}

当您这样做时,代码将在您运行程序时自动运行(只要这是您的主类,如果不是,您需要创建它的实例以便构造函数运行。)

于 2013-08-16T01:16:38.553 回答