[英]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.