So in my java class we have a homework assignment to use System.currentTimeMillis to display the amount of time between clicks. I’ve tried and tried but it isn’t working. Here’s my code.
1 /* Matthew Caldwell
2 * September 21, 2011
3 * Homework #4: Problem 5.8.1 pg. 149
4 * Program that displays the amount of time that passed
5 * between two mouse clicks. Nothing is displayed
6 * on the first click, then each successive click will
7 * display how much time passed between that click and
8 * the previous one.
9 */
10
11 import objectdraw.*;
12 import java.awt.*;
13
14 public class ElapsedTimeClient extends WindowController {
15
16 public static void main(String[]args) {
17 new ElapsedTimeClient().startController(800,500);
18 }
19
20 private Text title,result;
21 private double count = 0;
22
23 public void begin() {
24
25 // Set up the title and result
26 title = new Text("CLICK COUNTER",
27 canvas.getWidth() / 2,
28 20, canvas);29 title.move(-title.getWidth() / 2, 0);
30 result = new Text("", canvas.getWidth() / 2, 40, canvas);
31
32 }
33
34 public void onMouseClick(Location p) {
35
36 double timerS=0;
37
38 if(count == 0) {
39 timerS = System.currentTimeMillis();
40 } else {
41 result.setText("The time between clicks was " +
42 (System.currentTimeMillis() - timerS)/1000 +
43 " seconds.");
44 timerS = System.currentTimeMillis();
45 }
46
47 count++;
48
49 }
50
51 }
I don’t really want anyone to completely tell me how to do it but I just need a little guidance. What am I doing to make this wrong?
The code all compiles and runs just fine but when I click instead of giving me the time that elapsed between clicks it’s giving me a big long number that never changes. It’s telling me 1.316639174817E9 almost every single time.
Firstly, system time in millis should be represented as a long, not a double.
Secondly, you need to make the variable that holds the time since the last click (timerS) an instance variable, it’s currently method local and so reset every time.
In short, change:
from being a local variable, to an instance variable, and a long: