在 for 循环中的操作之间交替

2022-09-02 05:00:18

我是Java初学者,请耐心等待。:)我还没有学过任何像语句之类的东西,我只学习了循环,变量和类。我需要编写一个生成以下输出的单个循环:if

10 0 9 1 8 2 7 3 6 4 5 5

从片段中我可以看到,数字之间的差异减少了一个,所以从10到0它被减去10,然后从0到9它被加了9,并且它继续在加法和减法之间交替。

我的想法是创建循环,其中我的变量在循环中减少1(),但我不太确定如何在循环中添加和减去之间交替i = 10i--

 public class Exercise7 {
    public static void main(String[] args) {            
        for(int i = 10; i >= 0; i--) {
            System.out.print(i + " ");
        }
    }
 }

答案 1

为什么不增加两个变量,增量一个,另一个递减:

int y = 0;
int z = 10;
for(int i = 10; i >= 5; i--) {
      System.out.print(z + " " + y + " ");
      y++;
      z--;
}

输出:

10 0 9 1 8 2 7 3 6 4 5 5 

但是,我们也可以在没有额外变量的情况下执行此操作:

for(int i = 10; i >= 5; i--) {
   System.out.print(i + " " + 10-i + " ");        
}

答案 2

我不认为OP真的希望有人为他们做功课,所以我将坚持回答他们实际提出的问题:如何在循环中的两个操作之间交替(这样他们就可以保留他们提出的算法)。:)

有一个漂亮的“技巧”,当我们想在大多数编程语言中每隔一次迭代做一些事情时,它经常使用。你肯定会在你的生活中遇到它,如果你不知道发生了什么,它可能会令人困惑,所以在这里!


% 运算符将产生其操作数之间除法的其余部分

例如,请考虑以下事项:7 ÷ 2 = 3.5

在处理整数时,你会说,然后你剩下.
在这种情况下,当所有变量都是 s 时,在 Java 中,将是 和 是 。7 ÷ 2 = 31int7 / 237 % 21

这对你来说是模数


这个运算符的有趣之处在于,一般来说,除法的有趣之处是固有的,特别是一种情况:除法的其余部分总是要么是......它交替!这是这里的关键词。201

以下是“技巧”(不是真正的技巧,它基本上是一种模式,考虑到它的使用范围),在迭代中交替操作:

  1. 采用循环中每次迭代递增的任何变量
  2. 检验该变量除以的其余部分2
  3. 如果是,做点什么,否则(它会),走另一条路!01

在你的情况下,为了回答你的实际问题(尽管其他人确实有很好的观点,但我并不是想把它从任何人那里拿走),你可以考虑使用这样的东西:

if( i % 2 == 0 ) {
    // i is even, subtract
} else {
    // i is odd, add
}

这样可以让你继续使用你最初想到的算法!