Re: VERY PECULIAR PROBLEM
On 12/03/15 18:38, Doug Mika wrote:
Hi to all, I don't know what is wrong with the following method. It is a method inside a Timer class that extends Thread. The peculiar problem is that IF i include the System.out.print(""); line in the method, the program works FINE, if however I delete the System.out.print(""); methods or REM it out, the program doesn't count time? How Could that one line which does NOTHING cause the entire program to function correctly?
public void run(){
long timeStamp = System.currentTimeMillis();
while(true){
if(timeStamp + 1000 <= System.currentTimeMillis()){
timeStamp = System.currentTimeMillis();
System.out.print("");
if(this.paused==false){
this.secCount++;
this.hrs = (int)this.secCount / 3600;
this.min = (int)(((int)(this.secCount % 3600))/60);
this.sec = (int)this.secCount % 60;
if(this.debug) System.out.println("Timer: "+this.hrs+":"+this.min+":"+this.sec);
}
}
}
}
Much thanks for any ideas, I have NO IDEA why a System.out.print statement could impact the functioning of this program to such an extent?
Doug
Hmm, I just wrapped your code in a *simple* test class and ran it, it
produces output with or without the System.out, I think you should be
looking elsewhere.
package com.foo;
public class TimerTest extends Thread{
int hrs, min, sec, secCount;
boolean debug = true;
boolean paused = false;
public void run(){
long timeStamp = System.currentTimeMillis();
while(true){
if(timeStamp + 1000 <= System.currentTimeMillis()){
timeStamp = System.currentTimeMillis();
//System.out.print("");
if(this.paused==false){
this.secCount++;
this.hrs = (int)this.secCount / 3600;
this.min = (int)(((int)(this.secCount % 3600))/60);
this.sec = (int)this.secCount % 60;
if(this.debug) System.out.println("Timer:
"+this.hrs+":"+this.min+":"+this.sec);
}
}
}
}
public static void main(String[] args){
new TimerTest().start();
}
}
//output
Timer: 0:0:1
Timer: 0:0:2
Timer: 0:0:3
Timer: 0:0:4
Timer: 0:0:5
Timer: 0:0:6
Timer: 0:0:7
.... etc
--
Not floundering ... just fishing