#java #arrays
#java #массивы
Вопрос:
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. Что я делаю не так?
2-й вопрос, касающийся перевернутого массива, при распечатке он дает мне правильный ответ, но каждое число в отдельной строке. Как мне получить его в 1 строке в формате ; reversed: [-1000,615,0,3,10,7]
Комментарии:
1. ваш код показывает, что max и min включены.. каковы его значения.. и как вы вычисляете сумму
2.
mean = sum/total
зачем вам нужноmin
иmax
?3. Вы пытаетесь найти медиану?
4. Где
sum
вычисляется?5. Вам также необходимо удалить выбросы из подсчета:
/(myFunArray.length-2)
.
Ответ №1:
ответ на ваш второй вопрос — не печатать с помощью
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("]");
Чтобы ответить на ваш первый вопрос, вам необходимо предоставить следующее:
Как вы вычисляете sum, max и min. Даже если вы упомянули без max и min.. вы все еще используете его в своем коде
Комментарии:
1. вам нужно проверить следующий элемент, если он существует, тогда следует добавить запятую
Ответ №2:
Подумайте о логике кода, когда вы манипулировали массивом… вы увидите, что среднее значение без min или max такое же, как: среднее значение, исключая элементы с индексом 0 и длиной индекса-1, если массив был отсортирован, так что это то, что вам нужно сделать
- отсортировать массив
- цикл, исключающий 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);