Java-结果输出不正确

Java-结果输出不正确,java,arrays,methods,Java,Arrays,Methods,我正在尝试完成一个程序,该程序显示一周的平均温度、最热温度和最冷温度,并显示最热和最冷的日期。用户从Sun-Sat输入7个温度。它几乎可以工作,但似乎底部附近的方法searchTemp中有一个错误,该方法可以查看温度数组中最高/最低温度出现的次数,然后创建所需大小的数组,然后对所有值进行迭代,存储原始数组中发生高温/低温的索引,然后返回带有索引位置值的新数组。理想情况下,我会将这些值映射到一个数组,其中包含从星期天到星期六的字符串,并打印出温度最高或最低的所有日子。问题是,现在如果用户输入18作

我正在尝试完成一个程序,该程序显示一周的平均温度、最热温度和最冷温度,并显示最热和最冷的日期。用户从Sun-Sat输入7个温度。它几乎可以工作,但似乎底部附近的方法searchTemp中有一个错误,该方法可以查看温度数组中最高/最低温度出现的次数,然后创建所需大小的数组,然后对所有值进行迭代,存储原始数组中发生高温/低温的索引,然后返回带有索引位置值的新数组。理想情况下,我会将这些值映射到一个数组,其中包含从星期天到星期六的字符串,并打印出温度最高或最低的所有日子。问题是,现在如果用户输入18作为最高值,然后他们再次输入18,而不是程序输出“星期一-星期三”之类的内容,它会输出“星期三-星期三”

有人能帮我吗

    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;
        }

}
公共静态int[]searchTemp(int[]数组,int键){
整数计数=0;
for(int i=0;i
我相信它就在这里

    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;  <---------
        }
    }
int[]索引=新的int[count];
对于(int j=0;j索引[i]=i;应按如下方式更改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;
   }
公共静态int[]searchTemp(int[]数组,int键){
整数计数=0;
for(int i=0;i0&&index[j-1]==i){
继续;
}
否则{
指数[j]=i;
打破
}                   
}                    
}
}
回报指数;
}
这将返回正确的最热/最冷温度。
希望有帮助!

请将这段文字分成几段。请看这一行,
索引[i]=i;
i
值范围在
0
array.length
之间。而
索引
大小可能是
array.length
啊,很好,谢谢,这确实解决了越界问题,不过现在如果用户输入18作为最高值,然后再次输入18,而不是程序输出类似于“星期一-星期三”的内容,它输出星期三-星期三“@Eliseo