Помогите упростить решение задачи - Alphabet
Алфавит В одном проекте одной команды разработан класс
class Alphabet{
private int a, b, c, d, e, f, g, h, i, j, k, l,
m, n, o, p, q, r, s, t, u, v,
w, x, y, z, sum;
}
В этой команде программистов недолюбливают массивы.
Да, это какая-то странная команда, но именно вы должны положить этому конец - стать тимлидом и научить всех использовать массивы.
Но для того, чтобы вас зауважали, нужно очень быстро дописать класс так, чтобы можно было задавать значения переменных и считывать их сумму. (Изучите примеры)
Подсказка: если подумать минуту, то можно решить задачу за 1 минуту и 5 секунд!
Ну, а после успешной сдачи, никогда так не пишите!
Для примера:
Тест
Alphabet alphabet = new Alphabet();
alphabet.setA(5);
System.out.println(alphabet.getSum());
Результат
5
Тест
Alphabet alphabet = new Alphabet();
alphabet.setY(5);
alphabet.setS(7);
alphabet.setD(7);
System.out.println(alphabet.getSum());
Результат
19
Задачу я сдал, но то, что её можно сделать за 5 секунд не дает мне покоя. Помогите
Мое решение - JAVA
class Alphabet {
private int a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z;
public void setA(int value) {
a = value;
}
public void setB(int value) {
b = value;
}
// Методы для остальных букв
public int getSum() {
return a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z;
}
}
Ответы (2 шт):
Используй рефликсию. метод будет выглядеть как SetValue("A",5); метод будет выглядеть как SetValue("e",8);
https://javarush.com/groups/posts/513-reflection-api-refleksija-temnaja-storona-java
Вероятно, подразумевалось что вместо 26 переменных можно использовать один массив такого же размера, с единым методом доступа и одновременной модификацией суммы элементов:
public class Alphabet {
private int[] arr = new int[26];
private int sum;
public void setA(int value) { set('a', value);}
public void setB(int value) { set('b', value);}
// etc.
private void set(char ix, int value) {
if (value != arr[ix - 'a']) {
sum -= arr[ix - 'a'];
sum += arr[ix - 'a'] = value;
}
}
}