Arraylist, несравненные типы: DieClass и int

Попытка написать программу, которая «кидает» кости и отображает результаты бросков игроков и компьютера, а также находит, сколько выпало каждого числа. Скажем, игрок выбрасывает 3 4 3 5 6, тогда у игрока есть совпадение, состоящее из 2 3. Еще не написал код для отображения соответствия.

Моя проблема в том, что я пытаюсь записать рулоны в ArrayList, затем сравнить каждое число для игроков и компьютерных рулонов из ArrayList и подсчитать количество вхождений каждого числа, но я продолжаю получать ошибку

ошибка: несопоставимые типы: DieClass и int

Всякий раз, когда я пытаюсь сравнить с ArrayList

Рассматриваемая программа использует методы из класса DieClass

import java.util.ArrayList;
public class DieTester
{
private static ArrayList<DieClass> player = new ArrayList<DieClass>();
private static ArrayList<DieClass> computer = new ArrayList<DieClass>();

public static void main(String[] args)
{
    for(int a = 1; a <= 5; a++)
    {
        DieClass roller = new DieClass();
        player.add(roller);
    }
    for(int a = 1; a <= 5; a++)
    {
        DieClass roller = new DieClass();
        computer.add(roller);
    }
    System.out.println("The user rolls: "+player);
    System.out.println("The computer rolls: "+computer);
}

public String findMatching()
{
    int count1 = 0;
    int count2 = 0;
    int count3 = 0;
    int count4 = 0;
    int count5 = 0;

    for(int i=1; i<player.size(); i++)
    {
        if(player.get(i)==1)
        {
            count1++;
        }
        else if(player.get(i)==2)
        {
            count2++;
        }
        else if(player.get(i)==3)
        {
            count3++;
        }
        else if(player.get(i)==4)
        {
            count4++;
        }
        else if(player.get(i)==5)
        {
            count5++;
        }
    }

    for(int i=1; i<player.size(); i++)
    {
        if(computer.get(i)==1)
        {
            count1++;
        }
        else if(computer.get(i)==2)
        {
            count2++;
        }
        else if(computer.get(i)==3)
        {
            count3++;
        }
        else if(computer.get(i)==4)
        {
            count4++;
        }
        else if(computer.get(i)==5)
        {
            count5++;
        }
    }
}

}


person Rosenthal    schedule 04.03.2013    source источник
comment
DieClasses не будет распаковываться в целые числа. Если у этого класса есть getFace()/getNumber() или любой другой метод, который вам нужен для получения int, который он хранит (если есть), используйте его для проверки.   -  person A--C    schedule 04.03.2013


Ответы (1)


Ваша проблема в том, что вы сравниваете DieClass с целыми числами.

 if(player.get(i)==1)

Для счетчиков, почему бы вам не использовать массив int? как

int counters [] = new int[6]; 

counters[2]++;

Пожалуйста, опубликуйте DieClass, однако я думаю, что ваш код должен быть таким.

for (DieClass dieClass : player) {          
counters[dieClass.getNumber()-1]++; //Supose that DieClass has a getNumber method and set minus one because counters goes from 0 to 5
}
person psabbate    schedule 04.03.2013