2016-01-24 62 views
0

我正在製作一個循環整數列表(簡單,杜)的程序。問題是,當我循環並嘗試將整數列表轉換爲字符串列表時,出現java.lang.String cannot be cast to java.lang.Integer錯誤。是的,字符串到整數錯誤,而不是整數到字符串錯誤。我不知道爲什麼會發生這種情況,我需要幫助解決這個問題。循環遍歷整數列表時發生Java Cast錯誤?

我如何定義列表:

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; 

} 
+0

我打算假設問題出現在for循環語句(?)中。嘗試將num編入一個字符串,然後將其轉換爲所述循環內的整數。因爲鑄造失敗是有意義的,所以你要求一個整數來保存一個列表的值。 SomeStudent

+0

如果我試圖讓'num'成爲一個字符串,那麼我得到一個編譯錯誤,希望我把它改回到整數。我以前通過這樣的列表(通常是字符串列表),沒有問題。 – AngryCupcake274

+0

這篇文章:http://stackoverflow.com/questions/18524/java-best-way-of-converting-listinteger-to-liststring?rq=1基本上有我使用的確切代碼,但沒有得到錯誤。 – AngryCupcake274

回答

0

它可以是你傳遞變量list上述功能之前,你從一個字符串列表強制轉換爲(List<Integer>) stringListstringList類型是List<String>

+1

@ AngryCupcake274你能否也請告訴你如何調用上述方法?在通用參數中必須存在錯誤的投射位置。您是否沒有收到關於不安全通用轉換的編譯時警告? –

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] 

你的錯誤就在於代碼的其他地方你還沒有告訴我們,我的猜測通過某種方式在輸入列表中添加一個字符串。要解決它,你需要創建併發佈一個有效的MCVE,一個向我們顯示錯誤的MCVE。