Программа Analasys max и min и режим и графическая гистограмма - PullRequest
0 голосов
/ 31 мая 2018

Привет, в моей программе я хочу отобразить среднее число, наибольшее число, наименьшее число и режим в массиве.Пока работает только мое среднее и мои методы для min и max оба = первое введенное число.Например, если я скажу, что хочу ввести 3 числа, а я поставлю 12, 15 и 6. Минимальное и максимальное значения будут оба: 12, поскольку это первое введенное число, и это неправильно, поэтому, пожалуйста, помогите.Вот мой код.

    int amount;
    System.out.println(" Enter the amount of numbers you would like to enter: ");
    amount = scan.nextInt();

    int [] arr = new int [amount];
    int outcome = 1;

    for (int i = 0; i < arr.length; i++){
        System.out.println("Enter a number 1 through 50");
        outcome = scan.nextInt();
        arr [i] = outcome;

    }

    System.out.println(" ");

    System.out.println( " The average is" ); 
    System.out.println(average(arr));
    System.out.println(" ");

    System.out.println( " The lowest value in the array is " ); 
    System.out.println(min(arr));
    System.out.println(" ");

    System.out.println( " The largest value in the array is " ); 
    System.out.println(max(arr));
    System.out.println(" ");


}





public static double average ( int [] arr) {

    double sum = 0;
    int value = arr.length;
    for ( int i = 0; i < arr.length; i++){
        sum += arr [i];
    }
    sum = sum / value;
    return sum;



}

public static int min (int [] arr) {
        int shortest = 0;
        int smallest = 100;
        int length = arr.length;

     for ( int i = 0; i < arr.length; i ++ ) {
        if ( length < smallest)
        shortest += arr[i];
        smallest = arr.length;
     }

       return shortest;
   }

public static int max (int [] arr) {
    int largest = 0;
    int biggest = 0;
    int length = arr.length;

 for ( int i = 0; i < arr.length; i ++ ) {
    if ( length >  largest)
    biggest += arr[i];
    largest = arr.length;
 }

   return biggest;

}

}

1 Ответ

0 голосов
/ 31 мая 2018

Это было бы довольно просто.Причина, по которой ваши min и max методы возвращают 12, заключается в том, что вы устанавливаете как самый большой, так и самый маленький значения arr.length и, таким образом, немедленно останавливаете цикл for только после одного запуска.Кроме того, есть гораздо более простые реализации для такого рода проблем.Попробуйте сделать что-то вроде этого:

public int getMax(int[] arr)
{
  int max = arr[0];  //To have a baseline
  for(int i = 1; i < arr.length; i++)
  {
    if(arr[i] > max)
    {
      max = arr[i];
    }
  }
  return max;
}

public int getMin(int[] arr)
{
  int min = arr[0];  //To have a baseline
  for(int i = 1; i < arr.length; i++)
  {
    if(arr[i] < min)
    {
      min = arr[i];
    }
  }
  return min;
}

Это гораздо удобнее для чтения и проще в исполнении.Просто спросите, есть ли у вас вопросы: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...