93.0k views
5 votes
Write a public static void method named printStatistics which takes a single parameter of an ArrayList of Integer objects. The method should print the Sum, Average and Mode of the integers in the parameter ArrayList. If there is more than one mode (i.e. two or more values appear equal numbers of times and no values appear more often), the method should print "no single mode".

1 Answer

2 votes

Answer:

import java.util.ArrayList;

import java.util.Collections;

import java.util.HashMap;

import java.util.Map;

public class Statistics {

public static void printStatistics(ArrayList<Integer> numbers) {

// Calculate sum and average

int sum = 0;

for (int num : numbers) {

sum += num;

}

double average = (double) sum / numbers.size();

// Calculate mode(s)

Map<Integer, Integer> frequency = new HashMap<>();

int maxFrequency = 0;

for (int num : numbers) {

int currentFrequency = frequency.getOrDefault(num, 0) + 1;

frequency.put(num, currentFrequency);

if (currentFrequency > maxFrequency) {

maxFrequency = currentFrequency;

}

}

// Check if there is a single mode or not

boolean singleMode = true;

int mode = 0;

for (Map.Entry<Integer, Integer> entry : frequency.entrySet()) {

if (entry.getValue() == maxFrequency) {

if (mode != 0) {

singleMode = false;

break;

} else {

mode = entry.getKey();

}

}

}

// Print the statistics

System.out.println("Sum: " + sum);

System.out.println("Average: " + average);

if (singleMode) {

System.out.println("Mode: " + mode);

} else {

System.out.println("no single mode");

}

}

public static void main(String[] args) {

ArrayList<Integer> numbers = new ArrayList<>();

numbers.add(1);

numbers.add(2);

numbers.add(3);

numbers.add(2);

numbers.add(4);

printStatistics(numbers);

}

}

Step-by-step explanation:

In this code, we first calculate the sum and average of the input numbers by iterating over the ArrayList. We then calculate the frequency of each number using a HashMap, and keep track of the maximum frequency. We then iterate over the HashMap to check if there is a single mode or not. If there is, we print the mode; otherwise, we print "no single mode". Finally, we print the sum and average.

User Dabru
by
7.3k points