代码接近正确,但我无法看到我如何从System.out.println
移动到toString()
方法,我缺少什么?
import java.util.Scanner;
class Histogram
{
private int[] numCount;
int size=0;
public Histogram(String line)
{
setList(line);
}
public void setList(String line)
{
numCount = new int[20];
for(int i=0;i<10;i++)
numCount[i]=0;
Scanner chopper = new Scanner (line);
while (chopper.hasNextInt())
{
int num = chopper.nextInt();
numCount[num]++;
}
for(int i=0;i<10;i++)
System.out.println(i+"::"+numCount[i]);
System.out.println();
System.out.println();
}
}
答案 0 :(得分:0)
首先,在setList()
中,基元int
的默认值为0.如果使用十进制数学,则只需要10位数。并删除println
(s);
public void setList(String line) {
numCount = new int[10]; // <-- base 10
Scanner chopper = new Scanner(line);
while (chopper.hasNextInt()) {
int num = chopper.nextInt();
numCount[num]++;
}
// once the loop is done, you can do
System.out.println(this); // <-- will call toString so
}
下一次覆盖toString()
。您可以使用Arrays.toString(int[])
返回指定数组内容的字符串表示形式
@Override
public String toString() {
return Arrays.toString(numCount);
}
最后,我个人更喜欢setList(String)
喜欢
private int[] numCount = new int[10]; // <-- base 10
public void setList(String line) {
for (char ch : line.toCharArray()) {
numCount[Character.digit(ch, 10)]++;
}
}