gpt4 book ai didi

java - 我无法跟踪变量计数的增加

转载 作者:行者123 更新时间:2023-12-02 11:53:29 24 4
gpt4 key购买 nike

我试图获取一个名为FrequencyCounters 的数组,计算一个数字在名为array 的数组中重复的次数。索引应该指的是数字,即索引 0 计算 0 出现的次数,索引 1 计算 1 出现的次数。它有点有效,但并不完美。

import java.util.*;

class ArrayTest {
public static void main(String[] args) {
int[] array = new int[]{1, 1, 4, 4, 4, 5, 5, 5, 5, 7, 8, 8, 8, 8, 9};

Arrays.sort(array);
int max = array[array.length - 1];
int[] frequencyCounter = new int[max];
System.out.println("max is " + max);
int checkNumber = 1;
int index = 0;
int length = array.length - 1;
for (int i = 0; i <= 8; i++) {
System.out.println("i is " + i);
if (index == 0) {
System.out.println("running index=0 statement");
while (checkNumber == array[index]) {

if (i == 0) {
System.out.println("Running i==0 statement");
frequencyCounter[i] = frequencyCounter[i] + 1;
} else if (i != 0) {
System.out.println("Running i!=0 statement");
frequencyCounter[i - 1] = frequencyCounter[i - 1] + 1;
}

index = index + 1;


}
checkNumber = checkNumber + 1;
} else {

System.out.println("index is " + index);
System.out.println("running i=0 else statement");

while (checkNumber == array[index]) {

if (i == 0) {
System.out.println("Running i==0 statement");
frequencyCounter[i] = frequencyCounter[i] + 1;
} else {
System.out.println("Running i!=0 statement");
frequencyCounter[i - 1] = frequencyCounter[i - 1] + 1;
}

index = index + 1;
}
checkNumber = checkNumber + 1;
}
System.out.println("index is " + index + " at end of loop for");
}
int output = 1;
for (int Z = 0; Z <= 8; Z++) {


System.out.printf("The number %d repeats %d


times",output,frequencyCounter[Z]
output++;
}
}


}

由于某种原因,在我的输出语句中索引突然从 5 跳到 9,然后跳到 14。我是一名高中生,希望在这个问题上得到一些帮助:)我需要找到数组的模式。我不允许使用像 HashMap 这样的花哨的东西。我只能使用数组类和循环进行简单的操作。

最佳答案

您可以创建一个数组,其大小为原始数组中最大 int (+1) 的大小,循环该数组,计算每个 int 出现的次数并将计数放在索引上。

public static void main(String[] args) {
int [] array=new int[] {1,1,4,4,4,5,5,5,5,7,8,8,8,8,9};
// replace the next line with sth else to get the max of the array.
int max = Arrays.stream(array).max().getAsInt();
int[] res = new int[max + 1];
for (int i = 0; i < res.length; i++) {
res[i] = 0;
for (int anArray : array) {
res[i] += anArray == i ? 1 : 0;
}
}
/* for (int re : res) {
System.out.println(re);
} */
}

关于java - 我无法跟踪变量计数的增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47744046/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com