ArrayList参数类型的匹配问题

import java.util.ArrayList;
public class SimpleDotCom {
private ArrayList locationCells;
public void setLocationCells(ArrayList loc) {
locationCells = loc;
}

public String checkYourself(String userinput)  {
    int index = locationCells.indexOf(userinput);
    String result = "miss";
    if(index >= 0){
        locationCells.remove(index);
        if(locationCells.isEmpty()) {
            result = "kill";
        }else{
            result = "hit";
        }
    }
    System.out.println(result);
    return result;
}

}

public class SimpleDotComGame {

public static void main(String[] args) {
    int numOfGuesses = 0;
    GameHelper helper = new GameHelper();

    SimpleDotCom theDotCom = new SimpleDotCom();
    int randomNum = (int) (Math.random() * 5);

    int[] locations = {randomNum, randomNum + 1, randomNum + 2};
    theDotCom.setLocationCells(locations);
    boolean isAlive = true;

    while(isAlive == true) {
        String guess = helper.getUserInput("enter a number");
        String result = theDotCom.checkYourself(guess);
        numOfGuesses++;
        if(result.equals("kill")) {
            isAlive = false;
            System.out.println("You took " + numOfGuesses + " guesses");
        }
    }
}

}

报错显示为:Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method setLocationCells(ArrayList) in the type SimpleDotCom is not applicable for the arguments (int[])

at SimpleDotComGame.main(SimpleDotComGame.java:12)
求大佬解答

6个回答

兄弟!我看了看,你的意思是随机生成3个连续的数可能是【0,1,2】【1,2,3】.....【4,5,6】等等。然后你自己手动输入一个数,判断这个输入的数是否在随机生成的3个数中,如果是的话,把输入的数从集合中删除,并打印“hit”,否则打印“miss”.
我亲手测了一下没问题了。
首先1,你不能i传个nt[]数组类型进去,其次还有其他问题,你创建集合必须用泛型《string》,这样你添加进去的元素是string,才能调用indexof方法
代码如下:图片说明

如果有问题找我。。我是为积分来的
fuweihua123
fuweihua123 回复Xiongzhizhu: 这两种方式选择一种就可以
大约 2 年之前 回复
Xiongzhizhu
Xiongzhizhu 回复fuweihua123: 厉害
大约 2 年之前 回复
Xiongzhizhu
Xiongzhizhu 回复fuweihua123: 不好意思啊,下午才登陆了查看了问题,,下面的int index = location.indexOf("1"); boolean contains = locations.contains("1");为什么要这样用呢?
大约 2 年之前 回复
fuweihua123
fuweihua123 不明确吗?
大约 2 年之前 回复

setLocationCells方法需要ArrayList类型,你怎么传个int[]数组类型进去。

Xiongzhizhu
Xiongzhizhu 刚学java,我也知道是这个错,但是不知道该怎么转换解决,,我是小白。。
大约 2 年之前 回复

你需要吧int[]转成ArrayList:

转成ArrayList locations = new ArrayList<>();
locations.add(randomNum);
localtions.add(randomNum + 1);
localtions.add(randomNum + 2);

Xiongzhizhu
Xiongzhizhu 发现locationCells.indexOf(userinput)有问题,输入值和随机值是相同的,但匹配不成功
大约 2 年之前 回复
Xiongzhizhu
Xiongzhizhu 程序可以编译成功,但是目的不能实现,输入的值都没法与0到5以内的随机值匹配成功呀
大约 2 年之前 回复

传参数错误
int[] locations = {randomNum, randomNum + 1, randomNum + 2};
变为
ArrayList locations = new ArrayList();
locations.add(randomNum);
locations.add(randomNum + 1);
locations.add(randomNum + 2);

Xiongzhizhu
Xiongzhizhu 发现locationCells.indexOf(userinput)有问题,输入值和随机值是相同的,但index匹配不成功
大约 2 年之前 回复
Xiongzhizhu
Xiongzhizhu 程序可以编译成功,但是目的不能实现,输入的值都没法与0到5以内的随机值匹配成功呀
大约 2 年之前 回复

类型传错了,不能用int[]!!

Xiongzhizhu
Xiongzhizhu 明白,就是不知道该如何改。。。
大约 2 年之前 回复

public void setLocationCells(ArrayList loc) {
locationCells = loc;
}
int[] locations = {randomNum, randomNum + 1, randomNum + 2};

    此处需要将int[]ArrayList locations = new ArrayList<>();

locations.add(randomNum);
localtions.add(randomNum + 1);
localtions.add(randomNum + 2);

Xiongzhizhu
Xiongzhizhu 将int[] locations = {randomNum, randomNum + 1, randomNum + 2};改为ArrayList locations = new ArrayList<>();运行全miss了。。
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问