2015-04-02 53 views
0

從列表中取出一個值然後將其轉換爲整數時,我遇到了問題,因此我可以將它用於不同的數學函數,如乘法。爲什麼我不能將此字符串作爲int來投射?

當前代碼:

int i = 0; 
while(i < student_id.size()){ 
    String finding = student_id.get(i).toString(); 
    int s101 = ((Integer)score101.get(student101.indexOf(finding))); // <----this is where im having problems 
    System.out.println(student_id.get(i)+" "+names.get(i)); 
    System.out.println("IR101 " + 
         score101.get(student101.indexOf(finding)) + 
         " IR102 " + 
         score102.get(student102.indexOf(finding))); 
    i++; 
} 

,即時通訊越來越是java.lang.String cannot be cast to java.lang.Integer錯誤。這讓我感到困惑,因爲我認爲這會成爲一個對象。我試圖將它從一個對象和一個字符串轉換爲整數,但都拋出錯誤。我怎樣才能將score101.get(student101.indexOf(finding))轉換爲int?

+1

使用'interger.parseInt' – 2015-04-02 13:27:01

+0

我曾經嘗試這樣做。仍然會拋出錯誤 – user3077551 2015-04-02 13:28:15

+1

那麼是什麼錯誤?字符串的價值是什麼? – 2015-04-02 13:29:02

回答

1

錯誤很明顯,java.lang.String cannot be cast to java.lang.integer

這意味着score101.get(student101.indexOf(finding))返回String。如果字符串代表Integer,那麼你可以很容易地

Integer.parseInt(score101.get(student101.indexOf(finding))) 

解析它編輯

根據您的評論,該字符串是一個Double,所以你需要使用parseDouble

Double.parseDouble(score101.get(student101.indexOf(finding))) 

如果你真的想要它作爲一個int並丟棄小數,你可以撥打intValue()將其轉換爲int(或直接投射)。

Double.parseDouble(score101.get(student101.indexOf(finding))).intValue() 
+0

這工作。非常感謝! – user3077551 2015-04-02 13:32:21

+0

@ user3077551不客氣。 – 2015-04-02 13:33:01

+0

但這是四捨五入嗎?比如說35.6和20.7的值加起來就可以返回55.0而不是36.3。 – user3077551 2015-04-02 13:42:24

相關問題