Let the Balloon Rise

这里写图片描述
根据问题描述,我们可以提取信息如下:
1、先输入一个数字n,若数字n不为0,则输入n个String类型的颜色的单词,若数字n为0,则停止输入。
2、最后统计每个数字后面颜色最多的单词。

先建立一个colour类

public class Colour {
    public List<String> colour = new ArrayList<String>();//储存单词
    public int num[] = null;//储存每个颜色单词的个数

    public List<String> getColour() {
        return colour;
    }
    public void setColour(List<String> colour) {
        this.colour = colour;
    }
    public int[] getNum() {
        return num;
    }
    public void setNum(int[] num) {
        this.num = num;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result +
        ((colour == null) ? 0 : colour.hashCode());
        result = prime * result + Arrays.hashCode(num);
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Colour other = (Colour) obj;
        if (colour == null) {
            if (other.colour != null)
                return false;
        } else if (!colour.equals(other.colour))
            return false;
        if (!Arrays.equals(num, other.num))
            return false;
        return true;
    }
    public Colour(List<String> colour, int[] num) {
        super();
        this.colour = colour;
        this.num = num;
    }
    public Colour() {
        super();
    }
    @Override
    public String toString() {
        return "colour = " + colour + ", num=" +
        Arrays.toString(num) + "]";
    }
}
public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        //定义一个colour类型容器   储存colour对象
        List<Colour> colour = new ArrayList<Colour>();

        while(true){
            Colour colo = new Colour();
            int a = sc.nextInt();
            if(a == 0){
                break;
            }else{
                colo.num = new int[a];
                for (int j = 0; j < colo.num.length; j++) {
                    colo.num[j] = 0;
                }
                //输入n个颜色单词
                for (int j = 0; j < a; j++) {
                    String str = sc.next();
                    if(colo.colour.contains(str)){//若该单词存在
                        int index = colo.colour.indexOf(str);
                        colo.num[index]++;
                    }else{//若该单词不存在
                        colo.colour.add(str);
                        int index = colo.colour.indexOf(str);
                        colo.num[index]++;
                    }
                }
            }
            colour.add(colo);//把颜色对象加入list容器中
        }

        //通过迭代器,依次输出每个colour对象中出险次数最多的颜色单词
        Iterator<Colour> it = colour.iterator();
        while(it.hasNext()){
            Colour c = it.next();
            int index = getMax(c);
            System.out.println(c.colour.get(index));
        }
        sc.close();
    }


    /**
     * @param c是colour对象
     * @return 颜色个数最大的下标
     */
    private static int getMax(Colour c) {
        int max = 0;
        for (int i = max + 1; i < c.num.length; i++) {
            if(c.num[i] > c.num[max]){
                max = i;
            }
        }
        return max;
    }

例:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/engerla/article/details/79369696