有没有办法在Java中做一个正负交替的数列?
Is there a way to make an alternating positive and negative number sequence in 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+" ");
}
想想简单的数学。你给出的例子有奇数正数和偶数负数 - 1, -2, 3, -4, 5, -6...
就像 Andy Turner 评论的那样:
i * ((i % 2 == 0) ? -1 : 1.)
所以 %
是取模运算符,它会给你除法的 余数 ,例如,2 / 2 是 1,余数为 0,3 / 2为 1,余数为 1。
三元运算符 () ? true : false
计算 ?
之前的表达式,如果为真,将产生冒号前的值,如果为假,则产生冒号后的值。
现在,如果您不一定希望它是关于 even/odd 个数字,您可以只保留一个乘数:
int num2 = scan.nextInt();
for (int i = 1, sig = 1; i <= num2; i++, sig = sig * -1) {
System.out.print(Integer.toString(i * sig));
}
每次与-1相乘都会翻转符号。
我想知道是否有一种方法可以使用条件语句和循环或嵌套循环在 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+" ");
}
想想简单的数学。你给出的例子有奇数正数和偶数负数 - 1, -2, 3, -4, 5, -6... 就像 Andy Turner 评论的那样:
i * ((i % 2 == 0) ? -1 : 1.)
所以 %
是取模运算符,它会给你除法的 余数 ,例如,2 / 2 是 1,余数为 0,3 / 2为 1,余数为 1。
三元运算符 () ? true : false
计算 ?
之前的表达式,如果为真,将产生冒号前的值,如果为假,则产生冒号后的值。
现在,如果您不一定希望它是关于 even/odd 个数字,您可以只保留一个乘数:
int num2 = scan.nextInt();
for (int i = 1, sig = 1; i <= num2; i++, sig = sig * -1) {
System.out.print(Integer.toString(i * sig));
}
每次与-1相乘都会翻转符号。