有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java数组是如何处理的?

首先是一个总结:我正在研究一些关于CodingBat的基本问题。com(对初学者或像我这样的生锈的人来说是好东西)并决定以“新”的方式循环数组

我说我“生锈了”

这是有效的:

public int arrayCount9(int[] nums) {
  int b=0;
  for(int i=0; i<nums.length;i++){
    if(nums[i]==9) b++;
  }
  return b;
}

这不起作用:

public int arrayCount9(int[] nums) {
  int b=0;
   for(int i: nums){
     if(nums[i]==9) b++;
   }
  return b;
}

错误:Exception:java。lang.ArrayIndexOutofBounds异常:9(行号:4)

*所以问题是如果(nums[i]==9)b++;*

因此,我的问题是:

1)*问题出在哪里*

2)*有人有规范参考吗*

关于#2,我尝试过谷歌搜索,但没有找到我要找的东西,即使有教程,我也无法完全理解下面的伏都教

我先谢谢你

编辑link to problem in question


共 (4) 个答案

  1. # 1 楼答案

    您对for-each循环的工作方式感到困惑
    这样做,看看你是否能解决问题

       for(int i: nums){
         System.out.println(i);
       }
    
  2. # 3 楼答案

    当您以“新方式”使用它时,您不再需要访问数组,您已经拥有循环中每个项的引用

    public int arrayCount9(int[] nums) {
      int b=0;
       for(int i: nums){
         if(i == 9) b++;
       }
      return b;
    }
    
  3. # 4 楼答案

    使用迭代值作为索引。应该是:

    for(int i: nums){
        if(i==9) b++;
    }
    

    因此,如果数组中的值大于数组大小,则会出现索引越界异常