打印偶数时遇到问题。如果我将参数设为1,7,则打印出两者之间的偶数(2,4,6),这正是我想要的。当int i大于int n时,我希望它以递减的方式打印出来,但if语句根本不执行。我无法弄清楚问题是什么???
public class Problem {
public static void main(String[] args) {
printEven(1,7);
printEven(21, 15);
//main
}
public static void printEven(int i, int n) {
System.out.print("[ ");
//if n is greater than i
if (i <= n) {
for (int t = i; t <= n; t++) {
if (t % 2 == 0) {
System.out.print(t + " ");
//if statement inner
}
//for loop
}
//if statement outer
}
//if i is greater than n
if (i >= n) {
for (int t = n; t >= i; t--) {
if (t % 2 == 0) {
System.out.print(t + " ");
//if statement inner
}
//for loop
}
//if statement outer
}
System.out.print("]");
System.out.println();
//printEven
}
//class
}
答案 0 :(得分:1)
除了其他人已经指出的内容外,我建议写一些类似
的内容int begin = (i < n)? i: n;
int end = (i < n)? n: i;
int step = (i < n)? 1: -1;
for (int t = begin; step*t < step*end + 1; t += step)
{
/*...*/
}
而不是有两个for循环,因此在进行更改时不必更改代码两次。如果循环内部有复杂的逻辑,这将非常方便。
答案 1 :(得分:0)
问题出在
行for (int t = n; t >= i; t--) {
将其更改为:
for (int t = i; t >= n; t--) { //this is how it should be
所以,你的代码应该是这样的。
if (i >= n) {
//for (int t = n; t >= i; t--) { // **this is wrong code.**
for (int t = i; t >= n; t--) { //this is how it should be
if (t % 2 == 0) {
System.out.print(t + " ");
//if statement inner
}
//for loop
}
//if statement outer
}
答案 2 :(得分:0)
更改: for (int t = n; t >= i; t--)
来: for (int t = i; t >= n; t--)