2013-03-26 3 views
1

Почему я получаю ClassCastException и как его исправить? Я получил следующее сообщение об исключении. Код ниже:Почему я получаю исключение ClassCastException и как его исправить?

Exception in thread "main" java.lang.ClassCastException:

java.lang.String cannot be cast to java.lang.Integer 
     at HighScores.sort(HighScores.java:32) 
     at HighScores.main(HighScores.java:10) 

Вот мой код:

import java.util.*; 


public class HighScores { 
    public static void main(String args[]) 
    { 
     ArrayList<String> names = new ArrayList(); 
     ArrayList<Integer> scores = new ArrayList(); 
     initialize(names, scores); 
     sort(names, scores); 
     display(names, scores); 
    } 

    public static void initialize(ArrayList names, ArrayList scores) 
    { 
     Scanner in = new Scanner(System.in); 
     for (int i = 0; i < 5; i++) 
     { 
      System.out.println("Enter the name for score # " + (i + 1) + ": "); 
      names.add(in.next()); 
      System.out.println("Enter the score for score # " + (i + 1) + ": "); 
      scores.add(in.next()); 
     } 
    } 

    public static void sort(ArrayList<String> names, ArrayList<Integer> scores) 
    { 
     for (int i = 0; i < (4); i++) 
     { 
      for (int j = (i + 1); j < (3); j++) 
      { 
/*Line 32 -->*/ if (scores.get(i) < scores.get(j)) 
       { 
        int tempScore = scores.get(i); 
        scores[i] = scores[j]; 
        scores[j] = tempScore; 
        String tempName = names.get(i); 

        names[i] = names[j]; 
        names[j] = tempName; 

        scores.add(i, maxValue); 
        scores.remove(j); 
        scores.add(j, temp); 

        String tempName = names.get(i); 
        String maxName = names.get(j); 
        names.remove(i); 
        names.add(i, maxName); 
        names.remove(j); 
        names.add(j, tempName); 

       } 
      } 
     } 
    } 

    public static void display(ArrayList names, ArrayList scores) 
    { 
     System.out.println("Top Scorers: "); 
     System.out.println(names); 
     System.out.println(scores); 
    } 
} 

ответ

1

Проблема заключается в том, что вы читаете в баллах, как String, и пытается поставить оценки в ArrayList Integer.

Вам необходимо либо прочитать оценку как целое число, либо проанализировать счет в целое число.

См ссылки API ниже

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextInt() http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt(java.lang.String)

+0

Почему исключение, выбрасываемые из 'sort' метода, а не' initialise'? – Holloway

Смежные вопросы