循环整数列表时出现Java Cast错误?

时间:2016-01-24 02:55:53

标签: java string arraylist integer

我正在创建一个遍历整数列表的程序(简单,duh)。问题是,当我循环并尝试将整数列表转换为字符串列表时,我收到java.lang.String cannot be cast to java.lang.Integer错误。是,String to Integer错误,而不是Integer to String错误。我不知道为什么或如何发生这种情况,我需要帮助来解决它。

我如何定义列表:

public List<Integer> killsList;
killsList = new ArrayList<Integer>();

我如何调用该方法:

gc.setList("playerKills", gc.getStringListFromIntegerList(plugin.killsList));

我如何添加值:

plugin.killsList.add(1);

错误发生在for (Integer num : list) {行......

代码:

public ArrayList<String> getStringListFromIntegerList(List<Integer> list) {

    ArrayList<String> newList = new ArrayList<String>();

    plugin.console.sendMessage(list.toString());

    for (Integer num : list) {

        newList.add(String.valueOf(num));
        plugin.console.sendMessage(String.valueOf(num));

    }

    return newList;

}

示例:

public List<Integer> killsList;
killsList = new ArrayList<Integer>();

plugin.killsList.add(kills);

gc.setList("playerKills", gc.getStringListFromIntegerList(plugin.killsList));

public ArrayList<String> getStringListFromIntegerList(List<Integer> list) {

    ArrayList<String> newList = new ArrayList<String>();

    plugin.console.sendMessage(list.toString());

    for (Integer num : list) {

        newList.add(String.valueOf(num));
        plugin.console.sendMessage(String.valueOf(num));

    }

    return newList;

}

2 个答案:

答案 0 :(得分:1)

您的问题尚不充分的概念证明。这是我的mcve使用您的代码来尝试捕捉您的错误:

import java.util.ArrayList;
import java.util.List;

public class Foo {
    public static void main(String[] args) {
        List<Integer> killsList;
        killsList = new ArrayList<Integer>();
        for (int i = 0; i < 10; i++) {
            killsList.add(i);
        }

        ArrayList<String> strList = getStringListFromIntegerList(killsList);
        System.out.println(strList);
    }

    public static ArrayList<String> getStringListFromIntegerList(List<Integer> list) {
        ArrayList<String> newList = new ArrayList<String>();
        // plugin.console.sendMessage(list.toString());
        for (Integer num : list) {
            newList.add(String.valueOf(num));
            // plugin.console.sendMessage(String.valueOf(num));
        }
        return newList;    
    }
}

并且它返回无错误:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

您的错误位于您未向我们展示的代码的其他地方,我的猜测是以某种方式将String放入输入列表中。要解决这个问题,您需要创建并发布一个有效的MCVE,它会向我们显示错误。

答案 1 :(得分:0)

在将变量list传递给上述函数之前,是否可以将其从字符串列表中转换为(List<Integer>) stringList并且stringList的类型为List<String>