【问题标题】:CSAwesome chapter 6.3CSAwesome 第 6.3 章
【发布时间】:2020-04-13 13:11:19
【问题描述】:

谁能帮我解决我在这里遇到的问题?我所做的一切都与他们提供的示例完全相同,以增强 for 循环。我该怎么做才能解决这个问题?

这是我的代码

public class EvenLoop {
    public static void main (String[] args){
        int[]values={6,2,1,7,12,5};
        //Rewriter this loop as a for each loop and run 
        for (int v: values){
            if (values [v] % 2 == 0)
                System.out.println(values[v]+"  is even!");
        }
    }
}

【问题讨论】:

  • 欢迎来到 StackOverflow。请阅读How to Ask a Question,然后您能否将代码和完整错误作为文本而不是图像添加到问题中。

标签: java computer-science


【解决方案1】:

这是你想要的吗

public class EvenLoop {
    public static void main (String[] args){
        int[]values={6,2,1,7,12,5};
        CheckNum(values);
        //Rewriter this loop as a for each loop and run
    }
    public static void CheckNum(int[]a){
        for(int j = 0 ; j <  a.length; j++){
            int key = a[j];
            if (key % 2 == 0)
                System.out.println(key +"  is even!");
        }
    }
}

或者,你只能删除条件子句中的(值)并打印在代码末尾和处理(v)

来自

for (int v: values){
    if (values [v] % 2 == 0)
        System.out.println(values[v]+"  is even!");
}

for (int v: values){
            if (v % 2 == 0) 
                System.out.println(v+"  is even!");
        }

.

public class EvenLoop {
    public static void main (String[] args){
        int[]values={6,2,1,7,12,5};
        //Rewriter this loop as a for each loop and run 
        for (int v: values){
            if (v % 2 == 0) 
                System.out.println(v+"  is even!");
        }
    }
}

【讨论】:

    【解决方案2】:

    您超出了数组的范围。在您的循环中,您使用for ( int n : values),它不使用索引,而是使用数组中的实际值。数组中的第一个值是6。然后,当您在语句中执行values[n] 时,您正在执行values[6]。由于您的数组只有 6 个元素长,它具有从 05 的有效索引,因此 values[6] 超出范围,您会收到错误消息。

    要修复它,只需将您的语句更改为 n 而不是 values[n]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-27
      • 2016-12-25
      相关资源
      最近更新 更多