Arrays 员额增量
我一直在复习我在java方面的老作品,在互联网上寻找答案,但我找不到我需要的东西。我有一个有序数组,它将值输入到方法countoccurrence(int[]list)中。我了解阵列的工作原理,但我的问题是:; 阵列如何在不创建重复项的情况下继续计数中的下一个数字 阵列如何能够跳过重复项并一直移动到最后,而不逐个检查所有重复项 这是代码Arrays 员额增量,arrays,increment,Arrays,Increment,我一直在复习我在java方面的老作品,在互联网上寻找答案,但我找不到我需要的东西。我有一个有序数组,它将值输入到方法countoccurrence(int[]list)中。我了解阵列的工作原理,但我的问题是:; 阵列如何在不创建重复项的情况下继续计数中的下一个数字 阵列如何能够跳过重复项并一直移动到最后,而不逐个检查所有重复项 这是代码 public static void Calculations(){ Scanner in = new Scanner(System.in);
public static void Calculations(){
Scanner in = new Scanner(System.in);
int[] values = {1, 2, 2, 2, 2, 3};
countOccurence(values);
}
public static void countOccurence(int[] list) {
//12 23 45 56 56 0
for (int i = 0; i < list.length; i++) {
int count = 0;
for (int j = 0; j < list.length ; j++) {
if (list[j] == i)
count += 1
}
if (count != 0)
System.out.printf("%d happens %d %s%n",
i, count, count > 1 ? "times" : "time");
}
}
公共静态空隙率计算(){
扫描仪输入=新扫描仪(系统输入);
int[]值={1,2,2,2,3};
计数发生率(数值);
}
公共静态void countoccurrence(int[]列表){
//12 23 45 56 56 0
for(int i=0;i1?“次”:“时间”);
}
}
}
让我们看看这里发生了什么,我相信这是合乎逻辑的
这方面的缺陷,我们将在本答案末尾讨论。:)
i=4
现在,那么iIs这个程序真的给出了出现的次数吗?如果(list[j]==list[i])
,这不是执行问题的最佳方式,因为结果是这样的。0发生1次1发生4次2发生4次3发生4次4发生4次5发生1次这是通常需要的结果1发生1次2发生4次3发生1次我真正需要知道的是,阵列如何足够智能,不计算其他2,直接跳到I=3。它在一次迭代中用-j遍历了2,然后跳转到-i-(5),根据你关于使用list[j]==i
而不是list[j]==list[i]
的解释,那么你为什么要使用外部循环呢?如果您的想法是检查所有的数字,那么外循环退出条件iI是否理解数组的大小和限制?我关心的是:'outer-loop iteration 2:i=1'和这里的'outer-loop iteration 3:i=2'您还有疑问吗?到目前为止,我得到了答案,我的疑问是,为什么结果不是这样看的:i=1等于j=0,i=2等于j=1,j=2计数=2,i=3等于j=1,j=2计数=2,i=4等于j=3,为什么它在外循环中为迭代i2和i3添加迭代?这就是Im丢失的地方对于外部循环的每次迭代,j
将完成4次迭代。这是因为j
每次都重置为0
。因此,对于外部循环的每次迭代,它将从j=0
开始运行,并上升到j=3
。
public static void Calculations(){
Scanner in = new Scanner(System.in);
int[] values = {1, 2, 2, 3};
//reducing few 2s to make the explanation shorter
countOccurence(values);
}
public static void countOccurence(int[] list) {
//12 23 45 56 56 0
for (int i = 0; i < list.length; i++) {
int count = 0;
for (int j = 0; j < list.length ; j++) {
if (list[j] == i)
count += 1
}
if (count != 0)
System.out.printf("%d happens %d %s%n",
i, count, count > 1 ? "times" : "time");
}
}
}
Outer-loop iteration 1: i=0
Inner-loop iteration 1: j=0, list[j]=list[0]=1!=(i=0), count=0
Inner-loop iteration 2: j=1, list[j]=list[0]=2!=(i=0), count=0
Inner-loop iteration 3: j=2, list[j]=list[0]=2!=(i=0), count=0
Inner-loop iteration 4: j=3, list[j]=list[0]=3!=(i=0), count=0
Print count 0
count=0 again
Outer-loop iteration 2: i=1
Inner-loop iteration 1: j=0, list[j]=list[0]=1=(i=1), count=1
Inner-loop iteration 2: j=1, list[j]=list[0]=2!=(i=1), count=1
Inner-loop iteration 3: j=2, list[j]=list[0]=2!=(i=1), count=1
Inner-loop iteration 4: j=3, list[j]=list[0]=3!=(i=1), count=1
Print count 1
count=0 again
Outer-loop iteration 3: i=2
Inner-loop iteration 1: j=0, list[j]=list[0]=1!=(i=2), count=0
Inner-loop iteration 2: j=1, list[j]=list[0]=2=(i=2), count=1
Inner-loop iteration 3: j=2, list[j]=list[0]=2=(i=2), count=2
Inner-loop iteration 4: j=3, list[j]=list[0]=3!=(i=2), count=2
Print count 2
count=0 again
Outer-loop iteration 4: i=3
Inner-loop iteration 1: j=0, list[j]=list[0]=1!=(i=3), count=0
Inner-loop iteration 2: j=1, list[j]=list[0]=2!=(i=3), count=0
Inner-loop iteration 3: j=2, list[j]=list[0]=2!=(i=3), count=0
Inner-loop iteration 4: j=3, list[j]=list[0]=3=(i=3, count=1
Print count 1