Я пытаюсь сделать основной цикл синхронизации, но я получаюПочему я получаю ошибку с нулем?
java.lang.ArithmaticException/by zero error
at Timer.advanceTime(Timer.java:24)
at Game.run(Game.java:79)
at java.lang.Thread.run(Thread.java:722)
вот мой код:
public class Timer {
private static final long NS_PER_SECOND = 1000000000L;
private static final long MAX_NS_PER_UPDATE = 1000000000L;
private static final int MAX_TICKS_PER_UPDATE = 100;
private float ticksPerSecond;
private long lastTime;
public int ticks;
public float a;
public float timeScale = 1.0F;
public float fps = 0.0F;
public float passedTime = 0.0F;
public Timer(float ticksPerSecond) {
this.ticksPerSecond = ticksPerSecond;
this.lastTime = System.nanoTime();
}
public void advanceTime() {
long now = System.nanoTime();
long passedNs = now - this.lastTime;
this.lastTime = now;
if (passedNs < 0L) passedNs = 0L;
if (passedNs > 1000000000L) passedNs = 1000000000L;
this.fps = (float)(1000000000L/passedNs);
this.passedTime += (float)passedNs * this.timeScale * this.ticksPerSecond/1.0E+009F;
this.ticks = (int)this.passedTime;
if (this.ticks > 100) this.ticks = 100;
this.passedTime -= this.ticks;
this.a = this.passedTime;
}
}
Поскольку вы деление на ноль. Больше ничего не может вызвать сообщение об ошибке. –
-1 - вы должны включить соответствующий вопрос в вопрос. См. [Help] –
Знаете ли вы, что ошибка на самом деле является 'ArithmeticException' и что'/by zero error' означает, что значение, по которому вы делите, равно '0'? Перейдите в строку 79 в файле 'Game.java' и узнайте, что происходит. – SimonT