我正在尝试完成一个显示平均,最热门和&本周最冷的温度,也显示哪些日子是最热和最冷的。用户从太阳 - 周六进入7个温度。它几乎正常工作,但似乎底部附近的方法中存在一个名为searchTemp的错误,此方法可以查看温度数组中出现最高/最低温度的次数,然后创建所需大小的数组,并且然后它迭代所有值,存储原始数组中出现高/低温度的索引,然后返回带有索引位置值的新数组。理想情况下,我会将这些值映射到包含星期日到星期六字符串的数组,并打印出温度最高或最低的所有日期。现在的问题是,如果用户输入18表示最高,然后再次输入18,而不是输出类似"周三和#34;它将于周三周三输出#34;
任何人都可以帮助我吗?
public static int[] searchTemp(int[] array, int key) {
int count = 0;
for(int i = 0; i < array.length; i++) {
if(array[i] == key)
count++;
}
int[] indices = new int[count];
for(int j = 0; j < indices.length; j++) {
for(int i = 0; i < array.length; i++) {
if(array[i] == key)
indices[j] = i;
}
}
return indices;
}
}
答案 0 :(得分:0)
我相信它就在这里
int[] indices = new int[count];
for(int j = 0; j < indices.length; j++) {
for(int i = 0; i < array.length; i++) {
if(array[i] == key)
indices[i] = i; <---------
}
}
应该是 indices [j]不是我,因为你正在使用内部数组的长度。
答案 1 :(得分:0)
searchTemp应更改如下:
public static int[] searchTemp(int[] array, int key) {
int count = 0;
for(int i = 0; i < array.length; i++) {
if(array[i] == key)
count++;
}
int[] indices = new int[count];
for(int j = 0; j < indices.length; j++) {
for(int i = 0; i < array.length; i++) {
if(array[i] == key) {
if(j > 0 && indices[j - 1] == i){
continue;
}
else {
indices[j] = i;
break;
}
}
}
}
return indices;
}
这将返回正确的最热/最冷。 希望这有帮助!