首页 > 解决方案 > 有没有办法在Java中制作交替的正负数序列?

问题描述

我想知道是否有一种方法可以使用条件语句和循环或嵌套循环在 Java 中创建交替的正负数序列。如果他们输入了更高的数字,我希望我的输出是这样的:1、-2、3、-4、5 等等。这就是我现在所拥有的,它只打印正数。请注意,我也在使用扫描仪,以便可以对其进行自定义。

System.out.println("Enter a number:");
int num2 = scan.nextInt();  
for (int i = 1;i <= num2;i++) {
    System.out.print(i+" ");
}

标签: javaloopsjava.util.scanner

解决方案


想想简单的数学。你给出的例子有奇数正数和偶数负数 - 1、-2、3、-4、5、-6 ......所以就像安迪·特纳评论的那样:

i * ((i % 2 == 0) ? -1 : 1.)

模运算符也是如此%,它将为您提供除法的余数,例如,2 / 2 是 1 余数为 0,3 / 2 是 1 余数为 1。三元运算符() ? true : false计算 the 之前的表达式,?如果为真,则产生冒号之前的值,如果为假,则产生冒号之后的值。

现在,如果您不一定希望这与偶数/奇数有关,则可以保留一个乘数:

int num2 = scan.nextInt();  
for (int i = 1, sig = 1; i <= num2; i++, sig = sig * -1) {
    System.out.print(Integer.toString(i * sig));
}

乘以 -1 每次都会翻转符号。


推荐阅读