Хорошо, так что вы хотите сделать, это построить синусоидальную волну, которая идет от 0 до 200, но с каким периодом? Вы хотели, чтобы это повторялось каждые 8 звонков?
Как насчет этого, используя встроенную функцию Java Math.sin
:
private static final double PERIOD = 8; // loop every 8 calls to updateNumber
private static final double SCALE = 200; // go between 0 and this
private int _pos = 0;
private int Number1 = 0;
public void updateNumber() {
_pos++;
Number1 = (int)(Math.sin(_pos*2*Math.PI/PERIOD)*(SCALE/2) + (SCALE/2));
}
По сути, мы сохраняем переменную, которая подсчитывает, сколько обновлений мы сделали, и масштабируем ее, чтобы она соответствовала периоду синусоидальной волны, 2 * PI. Это действует как вход в «настоящую» функцию греха, давая нам что-то, что идет между -1 и 1, но имеет правильную частоту. Затем, чтобы на самом деле установить число, мы просто масштабируем его в диапазоне от -100 до 100, а затем добавляем 100, чтобы переместить его в диапазон 0-200, который вы хотели с самого начала.
(Вам не нужно приводить число к целому, если у вас работает двойник, я просто придерживался духа того, что вы написали выше.)