如何在每次运行方法时进行变量递增?

时间:2014-07-04 08:47:06

标签: java variables

我试图让每次运行程序时int计数增加。 ie:所以如果我运行程序9次,并且doMethod被调用9次,则count的值将是9.但是因为我必须将count初始化为= 0 count,所以在每次迭代方法时都会将自身重置为0。有办法解决这个问题吗?

public class Test {

    public static void main (String[] args) {

        Test test1 = new Test();

        test1.doMethod();

    }

    public void doMethod ()  {

        int count = 0;

        count++;
        System.out.println(count);
    }
}

10 个答案:

答案 0 :(得分:2)

不要将其作为本地方法,而是将其作为实例成员。

int count = 0;
-----
public void doMethod() {
    count++;
    System.out.println(count);
}

因此,在0的每次通话中,它都不会重置为doMethod()

答案 1 :(得分:2)

如果您想在每次运行程序时增加计数,

  • 您必须将counter变量计数存储到文件或数据库表
  • 因此,每次执行开始时从存储中获取值 - 初始化为计数 - 增量并在方法存储中打印到方法完成后存储。
  • 如果这样做,变量计数将在每次运行程序时初始化为新值。

答案 2 :(得分:1)

您想知道您的程序执行了多少次,包括当前执行。因此,为此,您需要将计数写入文件,或者您需要创建一个注册表,您可以放置​​计数器并增加程序通过程序执行的所有时间:

以下是将执行计数器存储到文本文件的示例。

class Test {
    public static void main(String[] args) {

        Test test1 = new Test();

        test1.doMethod();

    }

    public int getCount() {

        int count = 0;
        try {
            if ( !new File("d:\\myCount.txt").exists())
                return 1;
            else {
                BufferedReader br = new BufferedReader(new FileReader(new File("d:\\myCount.txt")));
                String s = br.readLine();
                count = Integer.parseInt(s);
                br.close();
            }                
        } catch(Exception e) {
            e.printStackTrace();
        }
        return count;
    }

    public void putCount(int count) {
        try {
            BufferedWriter bw = new BufferedWriter(new FileWriter(new File("d:\\myCount.txt")));
            bw.write(Integer.toString(count));
            bw.close();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public void doMethod() { 
        int count = getCount();            
        System.out.println("You are running this program " + count + " number of times");
        count++;
        putCount(count);            
    }
}

答案 3 :(得分:1)

public class Arguments {

   private static int i = 1;

   //   Arguments() {
   //       System.out.println("Main method thread constructor incremented for "+ i++ + " time" +"\n");
   //   }

   public static void main(String[] args) {
        new Arguments().method();
        new Arguments().method();
        new Arguments().method();
        new Arguments().method();
        new Arguments().method();
        new Arguments().method();
   }

   private void method() {
       System.out.println("Main method value incremented for "+ i++ + " time" +"\n");
   }
}

答案 4 :(得分:0)

实例级别或 class 级别声明int count = 0;

public void doMethod() {
    int count = 0; // a new count variable is created each time doMethod() is called
    count++;
    System.out.println(count);
}

答案 5 :(得分:0)

如果在方法之外声明变量,则会记住状态。

解决方案可能是:

public class Test {

    int count = 0;

    public static void main(String[] args) {
        Test test1 = new Test();
        test1.doMethod();
        test1.doMethod();
        test1.doMethod();
    }

    public void doMethod ()  {
        count++;
        System.out.println(count);
    }
}

这种方式count在您调用new Test()时创建,并且会被记住,直到Object被销毁。变量有一个叫做“范围”的东西。它们只能在其范围内访问,并且只存在于该范围内。因为您在count方法中创建了void doMethod(),所以它在其他任何地方都不存在。查看范围的简单方法是通过观察括号{ },您的变量仅存储在这些括号内。在我的解决方案中,count的括号是整个Test类的括号。因此,存储变量直到Object被销毁。

有关范围的更多信息:http://en.wikipedia.org/wiki/Scope_(computer_science)

我刚刚注意到您提到您希望在运行程序后保留count值。您可以通过将其保存在数据库或文件中来完成此操作。但是,您可能意味着在运行count方法后仍希望保留void doMethod()值。我已经编辑了我的解决方案以执行void doMethod()方法三次,因此您在运行该方法后会看到实际保留的值。

答案 6 :(得分:0)

使用该方法定义计数变量:

public class Test {
    int count = 0;
    public static void main(String[] args) {
        Test test1 = new Test();

        test1.doMethod();

    }

    public void doMethod() {

        count++;
        System.out.println(count);
    }
}

答案 7 :(得分:0)

您可以声明static变量count

count将成为课程的一部分,而不是任何单个对象的一部分。

现在你只需要在每个方法调用中增加一个count变量:

public class Test {
      // Set count to zero initially.
    static int count = 0;

    public static void main (String[] args) {

        Test test1 = new Test();

        test1.doMethod();

    }

    public void doMethod ()  {
        // Every time the method calls, increment count.
        count++;
        System.out.println(count);
    }
}

<强>更新

您也可以在每次通话后在doMethod ()内打印计数

您可以将static方法定义为类的一部分,以便在方法调用后获取静态变量count的值:

class Test
{   
    // Set count to zero initially.
    static int count = 0;

     public void doMethod ()  {
        // Every time the method calls, increment count.
        count++;
    }

    static int getCount(){
        // get latest value of count after method calls
        return count;
    }

    public static void main (String[] args) throws java.lang.Exception
        {
             Test test1 = new Test();

             test1.doMethod();

             test1.doMethod();

             test1.doMethod();

             System.out.println(Test.getCount());
        }
}

答案 8 :(得分:0)

public static int count;

public int get(){
count=count+1;
return count;
}

答案 9 :(得分:0)

//Put whatever you need here...

int count = 0;

public void doMethod() {
count++;
System.out.println(count);
}

//This is the decrement

public void dontMethod {
count--;
System.out.println(count);
}

希望这对您有所帮助。 :)