If statement 两个if语句—一个isn';行不通
我打印偶数有问题。如果我把参数设为1,7,它会打印出介于(2,4,6)之间的偶数,这正是我想要的。当int i大于int n时,我希望它以递减的方式打印出来,但if语句根本不执行。我想不出问题出在哪里If statement 两个if语句—一个isn';行不通,if-statement,If Statement,我打印偶数有问题。如果我把参数设为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
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
}
公共类问题{
公共静态void main(字符串[]args){
印刷偶数(1,7);
印刷偶数(21,15);
//主要
}
公共静态无效打印偶数(整数i,整数n){
系统输出打印(“[”);
//如果n大于i
如果(i=i;t--){
如果(t%2==0){
系统输出打印(t+“”);
//if语句内部
}
//for循环
}
//if语句外部
}
系统输出打印(“]);
System.out.println();
//打印偶数
}
//阶级
}
问题就在眼前
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
}
更改:
用于(int t=n;t>=i;t--)
to:
for(int t=i;t>=n;t--)
除了其他人已经指出的内容之外,我建议写一些类似于
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)
{
/*...*/
}
intbegin=(i
而不是有两个for循环,这样在进行更改时就不必更改代码两次。如果您在循环中有复杂的逻辑,这将非常方便。我假设这是Java。如果是,请编辑您的问题并添加“java”标记。yea。厕所。通过单击所选答案上的复选框接受其中一个答案。