public class FunWithArrays {
public static void main(String[] args) {
int[] myFunArray = {7, 10, 3, 0, 615, -1000};
int i;
//minimum
int min;
min = myFunArray[0];
for (i=0; i < myFunArray. length; i++) {
if (myFunArray[i] < min) {
min = myFunArray[i];
}
}
//maximum
int max;
max= myFunArray[0];
for (i=1; i < myFunArray. length; i++) {
if (myFunArray[i] > max) {
max = myFunArray[i];
}
}
System.out.println("minimum = " + min + " maximum = " + max);
//mean without outliers
double noOutliersMean = 0;
for (i=0; i < myFunArray.length; i++){
noOutliersMean = ((sum - (max + min)) /myFunArray.length );
if ( myFunArray.length < 3){
System.out.println("not enough numbers");
}
}
System.out.println("Mean without Outliers: " +noOutliersMean);
//Array reversed
int[] reversed = myFunArray;
for(int i1 = reversed.length - 1; i1 >= 0 ; i1--) {
System.out.println( "Reversed " + reversed[i1]);
}
}
}
对于没有异常值(max和min)的平均值,答案应为5,我的代码行给出了1.333。我做错了什么?
关于阵列反转的第二个问题,当打印出来时,它给出了正确的答案,但每个数字在一个单独的行上。我如何让它在1行格式;逆转:[ - 1000,615,0,3,10,7]
答案 0 :(得分:0)
你的第二个问题的答案是不打印
println
,只需使用print
代码应为:
System.our.print("Reversed: [")
for(int i1 = reversed.length - 1; i1 >= 0 ; i1--) {
System.out.print(reversed[i1]);
if(i1>0){
System.our.print(",");
}
}
System.out.print("]");
要回答您的第一个问题,您需要提供以下内容:
如何计算总和,最大值和最小值。即使你提到没有max和min ..你仍然在你的代码中使用它
答案 1 :(得分:0)
在操作数组时考虑代码的逻辑...... 你会看到意味着没有最小值或最大值与以下相同: 如果数组已排序,则排除index0和index length-1处的元素的平均值,这就是你必须做的事情
int[] myFunArray = { 7, 10, 3, 0, 615, -1000 };
// unsorted { 7, 10, 3, 0, 615, -1000 };
// sorted { -1000, 0, 3, 7, 10, 615 };
Arrays.sort(myFunArray);
System.out.println(Arrays.toString(myFunArray));
int acumm = 0;
double mean = 0.0;
for (int i = 1; i < myFunArray.length - 1; i++) {
acumm += myFunArray[i];
}
mean = acumm / (myFunArray.length - 2);
System.out.println(mean);