package com.duesk.utils; public class Calculator { public static int[] calculateSums(int[] items) { int[] sums = new int[7]; sums[1] = 0; for (int i = 0; i < 10; i++) sums[1] += items[i]; sums[2] = 0; for (int i = 10; i < 20; i++) sums[2] += items[i]; sums[3] = 0; for (int i = 20; i < 28; i++) sums[3] += items[i]; sums[3] += items[8] + items[9]; sums[4] = 0; for (int i = 28; i < 36; i++) sums[4] += items[i]; sums[5] = items[0] + items[1] + items[5] + items[6] + items[7] + items[8] + items[9] + items[11] + items[12] + items[13] + items[14]; sums[6] = items[2] + items[3] + items[4] + items[8] + items[9] + items[10] + items[16] + items[17]; return sums; } public static int[] calculateProfileValues(int[] sums, double[][] norm) { int[] values = new int[6]; for (int k = 1; k <= 6; k++) { values[k-1] = 4; for (int p = 0; p < 5; p++) { if (sums[k] < norm[k-1][p]) { values[k-1] = p; break; } } } return values; } public static double calculateCorrelation(int[] seValues, int[] feValues) { double[] se = new double[6]; double[] fe = new double[6]; for (int i = 0; i < 6; i++) { se[i] = seValues[i] + 1; fe[i] = feValues[i] + 1; } double seMean = 0, feMean = 0; for (int i = 0; i < 6; i++) { seMean += se[i]; feMean += fe[i]; } seMean /= 6; feMean /= 6; double numerator = 0, seVar = 0, feVar = 0; for (int i = 0; i < 6; i++) { double seDiff = se[i] - seMean; double feDiff = fe[i] - feMean; numerator += seDiff * feDiff; seVar += seDiff * seDiff; feVar += feDiff * feDiff; } if (seVar == 0 || feVar == 0) return 0; return numerator / Math.sqrt(seVar * feVar); } public static double calculateAgreement(int[] seItems, int[] feItems) { int matches = 0; for (int i = 0; i < 36; i++) { if (seItems[i] == feItems[i]) matches++; } return matches * 100.0 / 36; } public static String getRating(int value) { switch (value) { case 1: return "weit unterdurchschnittlich"; case 2: return "unterdurchschnittlich"; case 3: return "durchschnittlich"; case 4: return "überdurchschnittlich"; case 5: return "weit überdurchschnittlich"; default: return "unbekannt"; } } }