覆盖创建子类的方法

时间:2014-06-23 01:08:47

标签: 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 result;
}

protected String repeatSymbol(int numTimes)
{
String result = "";
for (int index = 0; index <numTimes; index++)
result += symbol;
return result;
}
}

以下是该课程的模板:

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 个答案:

答案 0 :(得分:0)

在循环外声明另一个计数器,随循环递增,并将其与索引一起使用:

result+=repeatSymbol(frequencies[index]+counter);
counter+=frequencies[index];