Untitled
unknown
java
4 years ago
5.7 kB
5
Indexable
import java.util.*; public class Runner { public static double calculateStandardDeviation(double average, ArrayList<Integer> numbers){ double standardDeviation = 0.0; int length = numbers.size(); for(Integer num : numbers){ standardDeviation += Math.pow(num - average, 2); } return Math.sqrt(standardDeviation/length); } public static boolean isPalindrom(Integer num){ String stringNum = num.toString(); int strLength = stringNum.length(); StringBuilder reverseStr = new StringBuilder(""); for (int i = (strLength - 1); i >=0; --i) { reverseStr.append(stringNum.charAt(i)); } if(stringNum.equals(reverseStr.toString())){ return true; } return false; } public static double calculateMedian(ArrayList<Integer> numbers){ double median = 0.0; int length = numbers.size(); Collections.sort(numbers); if (length % 2 == 0) { int sumOfMiddleElements = numbers.get(length / 2) + numbers.get(length / 2 - 1); // calculate average of middle elements median = ((double) sumOfMiddleElements) / 2; } else { // get the middle element median = (double) numbers.get(length / 2); } return median; } public static void main(String[] args) { //TODO: handling exceptions //TODO: check accuracy of functions //we assume that the number of integers is unfamiliar Scanner stdin = new Scanner(System.in); ArrayList<Integer> numbers = new ArrayList<>(); //diff numbers with their frequencies TreeMap<Integer, Integer> diffNumbers = new TreeMap<>(); //we assume that the input is correct int numOfOdds = 0; int numOfEvens = 0; while(stdin.hasNextInt()){ int tmp = stdin.nextInt(); numbers.add(tmp); if (tmp % 2 == 0){ numOfEvens++; } else{ numOfOdds++; } if (diffNumbers.containsKey(tmp)){ diffNumbers.put(tmp, diffNumbers.get(tmp) + 1); } else{ diffNumbers.put(tmp, 1); } } //1. print number of elements System.out.println("Number of elements: " + numbers.size()); //2. print number of different elements System.out.println("Number of different elements: " + diffNumbers.size()); //3. print number of even numbers System.out.println("Number of evens: " + numOfEvens); //4. print number of odd numbers System.out.println("Number of odds: " + numOfOdds); //5. print frequency of repetition for each number (percentage) double maxPercentage = 0; int maxOccurrence = -1; for(Map.Entry<Integer, Integer> item: diffNumbers.entrySet()) { double percentage = (double)item.getValue() / numbers.size() * 100.0; if(percentage >= maxPercentage){ maxPercentage = percentage; maxOccurrence = item.getKey(); } System.out.println("Number " + item.getKey() + " has frequency of " + percentage + "%."); } //6. print the number with the maximum occurrence System.out.println("Number with max occurrence: " + maxOccurrence); //TreeMap stores sorted keys //7. print largest number int largestNum = diffNumbers.lastKey(); System.out.println("Largest number: " + largestNum); //8. print second-smallest number int i = 0; int secondSmallest = -1; for(Map.Entry<Integer, Integer> item: diffNumbers.entrySet()){ if(i==1){ secondSmallest = item.getKey(); break; } i++; } System.out.println("Second smallest number: " + secondSmallest); //9. print average of all numbers int sum = numbers.stream().reduce(0, Integer::sum); double avg = (double)sum / numbers.size(); System.out.println("Average of all numbers: " + avg); //10. print standard deviation System.out.println("Standard deviation: " + calculateStandardDeviation(avg, numbers)); //11. print median ArrayList copy = (ArrayList) numbers.clone(); System.out.println("Median: " + calculateMedian(copy)); //12. print sum of all numbers System.out.println("Sum of all numbers: " + sum); //13. print number of palindromes int numOfPalindromes = 0; int maxPalindrome = 0; for(Map.Entry<Integer, Integer> item: diffNumbers.entrySet()){ int currNumber = item.getKey(); if(isPalindrom(currNumber)){ numOfPalindromes += item.getValue(); if(currNumber>=maxPalindrome && currNumber<largestNum){ maxPalindrome = currNumber; } } } System.out.println("Number of palindromes: " + numOfPalindromes); //14. print largest palindrome that is smaller then the greatest number System.out.println("The largest palindrome number: " + maxPalindrome); //15. print numbers in reverse order System.out.print('['); for(i=numbers.size()-1; i>=1; i--){ System.out.print(numbers.get(i) + ", "); } System.out.println(numbers.get(i) + "]"); } }
Editor is loading...