【问题标题】:Arraylist, incomparable types: DieClass and intArraylist,无与伦比的类型:DieClass 和 int
【发布时间】:2013-02-18 02:05:55
【问题描述】:

尝试编写一个“掷”骰子并显示玩家和计算机掷骰结果的程序,以及找出每个数字掷了多少个。比如说,玩家掷出 3 4 3 5 6,那么玩家就有了一场由 2 个 3 组成的比赛。尚未编写显示匹配的代码。

我的问题是我试图将滚动记录到ArrayList,然后比较来自ArrayList 的玩家和计算机滚动的每个数字,并计算每个数字出现的次数,但我保留了它得到 ​​p> 的错误

错误:无法比较的类型: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++;
        }
    }
}

}

【问题讨论】:

  • DieClasses 不会拆箱成整数。如果该类具有getFace()/getNumber() 或任何您必须获取它正在存储的int 的方法(如果有),请使用它进行检查。

标签: java methods for-loop arraylist dice


【解决方案1】:

您的问题是您将 DieClass 与 Integers 进行比较

 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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    • 2013-04-25
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    相关资源
    最近更新 更多