#oop #processing
#ооп #обработка
Вопрос:
ПРИМЕЧАНИЕ: Кумулятивная гистограмма — это гистограмма, в которой каждое значение добавляется к сумме предыдущих значений, например, если есть 3 яблока, 2 банана и 6 апельсинов, тогда числа в обычной гистограмме будут [3,2,6], но в кумулятивной гистограмме они будут [3,5,11].
Вопрос: Создайте подкласс гистограммы под названием CumulativeHistogram. Мне нужно только переопределить метод toString(), чтобы решить проблему.
class Histogram
{
public char symbol = '*';
protected String[] categories;
protected int[] frequencies;
public Histogram(int numCategories)
{
categories = new String [ numCategories ];
frequencies = new int [ numCategories ];
for (int index = 0; index < numCategories; index ) {
categories[index] = "unlabeled";
frequencies[index] = 0;
}
}
public void setCategory(int index, String name, int frequency)
{
categories[ index ] = name;
frequencies[ index ] = frequency;
}
public String toString()
{
String result = "";
for (int index = 0; index<categories.length; index ){
result =categories[index] ": ";
result =repeatSymbol(frequencies[index]);
result ="n";
}
return resu<
}
protected String repeatSymbol(int numTimes)
{
String result = "";
for (int index = 0; index <numTimes; index )
result = symbol;
return resu<
}
}
Вот шаблон для класса:
class CumulativeHistogram extends Histogram {
public CumulativeHistogram(int numCategories) {
super(numCategories);
}
public String toString() {
//*****fill in this method
}
}
Некоторый тестовый код
Histogram hist = new Histogram(3);
hist.setCategory(0, " Apples", 4);
hist.setCategory(1, "Bananas", 2);
hist.setCategory(2, "Oranges", 5);
println( hist );
CumulativeHistogram hist2 = new CumulativeHistogram(3);
hist2.setCategory(0, " Apples", 4);
hist2.setCategory(1, "Bananas", 2);
hist2.setCategory(2, "Oranges", 5);
println( hist2 );
И его вывод
Apples: ****
Bananas: **
Oranges: *****
Apples: ****
Bananas: ******
Oranges: ***********
Комментарии:
1. Здесь нет никаких вопросов, кроме подразумеваемого «Может ли кто-нибудь сделать мою домашнюю работу за меня?». Ответ на это — нет.
2. вопрос в том, как переопределить метод?? и это не домашнее задание, перестань быть таким высокомерным.
3. Тогда ответ будет в тексте. Бит, в котором говорится «Заполнить этот метод». Это переопределение в действии. Напишите код для выполнения любой необходимой вам функциональности.
Ответ №1:
Объявите другой счетчик вне цикла, увеличивающийся вместе с циклом, и используйте его с индексом как таковым:
result =repeatSymbol(frequencies[index] counter);
counter =frequencies[index];