如何计算字符串中的数字

时间:2014-12-12 02:50:41

标签: java arrays

代码接近正确,但我无法看到我如何从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();
    }
}

1 个答案:

答案 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)]++;
    }
}