繁体   English   中英

在Java中翻转标志的计数器

[英]Counters that flip signs in java

好的,所以我正在尝试制作一个程序,我需要让计数器从-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
    }

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

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

哎呀,你们都太想了。 显而易见的可读性出了什么问题

if (counter > 0)
   counter = -1*(counter+2);
else
   counter = -1*(counter-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(这会使符号翻转)。

也使用模数:

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);
    }
}
int increment = 2;
while ("expression")
{
    j += increment * (Math.abs(j)) + increment;
    increment *= -1;
}

那这个呢?

很容易

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM