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.