首页 > 解决方案 > 如何在swift的“for循环”中改变i变量

问题描述

您好正在尝试快速执行此 Java 代码。在Java中,代码是:

public class Test{

 public static void main(String []args){
    int[] arr = new int[6];
    arr[0] = 0;
    arr[1] = 1;
    arr[2] = 2;
    arr[3] = 3;
    arr[4] = 4;
    arr[5] = 5;
    for(int i=0;i<=5;i++){
    System.out.println("i="+i);
    if(arr[i] % 2 == 0) continue;
    arr[i] = arr[i] + 1;
    i--;
    }
 }

}

控制台输出是:

i=0 i=1 i=1 i=2 i=3 i=3 i=4 i=5 i=5

Swift 中的相同代码是

var arr = [0,1,2,3,4,5]
for var i in 0...5 {
    print("i=\(i)")
    if (arr[i] % 2 == 0) {continue}
    arr[i] += 1
    i = i-1
}

在 Swift 代码中,输出是:

我=0 我=1 我=2 我=3 我=4 我=5

问题是,即使那个编译器强迫我将 i 设置为 var 进行编译, i 的值也不会在循环中发生变化,并且 i 每次设置值 0...5 时都会得到。

我的问题是如何在 Swift 中编写 Java 代码,以便我可以在需要时对 i 进行变异

标签: javaiosswiftfor-loop

解决方案


使用 while 循环:

var i = 0
while i <= 5 {
    print("i=\(i)")
    if (arr[i] % 2 == 0) {
        i += 1
        continue
    }
    arr[i] += 1
}

注意第二个变化:不是i在末尾减去 1,而是i在继续循环时只加 1,因为在 while 循环中,i通常不会改变。


推荐阅读