Посчитать зарплату для каждого из сотрудников. Java
Пользователь вводит кол-во сотрудников.
Затем вводит их фамилии.
Затем зарплату каждого за 4 квартала(зарплата хранится в двумерном массиве[n][4], где n это кол-во сотрудников, а 4 это зарплата.
Необходимо найти сумму зарплаты за 4 квартала.
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Введите кол-во сотрудников: ");
int n = in.nextInt();
System.out.println("Введите фамилии сотрудников: ");
String[] people = new String[n + 1];
for (int i = 0; i < people.length; i++) {
people[i] = in.nextLine();
}
int[][] money = new int[n][5];
for (int i = 1; i < people.length; i++) {
System.out.println("Введите зарплату" + people[i]);
for (int j = 0; j < people.length; j++) {
for (int k = 0; k < 4; k++) {
money[j][k] = in.nextInt();
money[j][4] = money[j][4] + money[j][j];
money[j][k] = in.nextInt();
}
}
}
}
}
У меня проблема с вводом, необходимо что бы просил ввести зарплату для каждого. Так же с суммой, не могу корректно посчитать.
Ответы (1 шт):
Автор решения: Alex Rudenko
→ Ссылка
Проблемы с вводом могут возникать из-за использования nextLine() / nextInt() вперемежку. Если принять, что фамилии не могут включать пробелы, то их можно считывать при помощи in.next().
Ошибки при расчёте суммы:
- начинается индексация с 1 -- теряется первый сотрудник
- не совсем понятно, зачем использовать тройной вложенный цикл и считывать ввод дважды
money[j][k] = in.nextInt(); - путаница с индексами:
money[j][4] = money[j][4] + money[j][j];-- должно быть+ money[j][k].
Работающий вариант с расчётом поквартальных сумм:
Scanner in = new Scanner(System.in);
System.out.println("Введите кол-во сотрудников: ");
int n = in.nextInt();
System.out.println("Введите фамилии сотрудников: ");
String[] people = new String[n + 1];
for (int i = 0; i < n; i++) {
people[i] = in.next();
}
people[n] = "Итого";
int[][] money = new int[n + 1][5];
int sum = 0;
for (int i = 0; i < n; i++) {
System.out.println("Введите зарплату: " + people[i]);
for (int k = 0; k < 4; k++) {
money[i][k] = in.nextInt();
money[i][4] += money[i][k];
money[n][k] += money[i][k]; // поквартальная сумма
money[n][4] += money[i][k];
sum += money[i][k];
}
}
for (int i = 0; i < people.length; i++) {
System.out.printf("%-14s: ", people[i]);
for (int j = 0; j < money[i].length; j++) {
System.out.printf("%4d ", money[i][j]);
}
System.out.println();
}
System.out.println("Всего: " + sum);
Примерный вывод:
Введите кол-во сотрудников:
3
Введите фамилии сотрудников:
Иващук Петренко Сидоров
Введите зарплату: Иващук
12 13 14 15
Введите зарплату: Петренко
16 17 18 19
Введите зарплату: Сидоров
20 19 18 17
Иващук : 12 13 14 15 54
Петренко : 16 17 18 19 70
Сидоров : 20 19 18 17 74
Итого : 48 49 50 51 198
Всего: 198
