在java中翻转标志的计数器

时间:2013-05-17 23:23:19

标签: java algorithm math counter performance

好的,所以我试图制作一个程序,我需要让计数器从-3开始然后下降2,但是其他每个数字都必须是正数:例如:

-3,5,-7,9,-11,13,-15,17,-19,......

任何输入?

我制作了一个成功的节目,但我觉得这不是很有效。

    while ("expression")
    {
        if (j % 4 == -1) //checks if number should be negative
            j = Math.abs(j);

        if (j > 0) //makes counter a negative
            j = -j;

        j -= 2; //goes down by 2
    }

5 个答案:

答案 0 :(得分:10)

您可以使用for循环和signSwitcher变量:

int signSwitcher = 1;
for (int x = -3; expression; x -= 2, signSwitcher *= -1) {
    int counter = x * signSwitcher;
}

答案 1 :(得分:7)

Geez,你们这些人都在想得太辛苦了。

显而易见的是什么问题
if (counter > 0)
   counter = -1*(counter+2);
else
   counter = -1*(counter-2);

答案 2 :(得分:2)

你正在做的事实上是为每个条目添加2,但随后翻转符号。

int current = 1;
float sign = 1.0f;
while(current < 100) {
    current += 2;
    sign = Math.signum(sign)*-1.0f;
    System.out.println(sign*current);
}

这只是将最后一个条目的符号乘以-1.0(这会使符号翻转)。

答案 3 :(得分:1)

也使用模数:

public static void main(String[] args) {
    for (int i = 3; i < 20; i += 2) {
        int sign = ((i + 1) % 4 == 0 ? 1 : -1);
        System.out.println(i * sign);
    }
}

答案 4 :(得分:0)

int increment = 2;
while ("expression")
{
    j += increment * (Math.abs(j)) + increment;
    increment *= -1;
}

这个怎么样?

非常容易