为什么会收到ClassCastException以及如何解决? [英] Why do I get a ClassCastException and how do I fix it?

查看:147
本文介绍了为什么会收到ClassCastException以及如何解决?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为什么会收到ClassCastException以及如何解决它?我收到以下异常消息。代码如下:

Why do I get a ClassCastException and how do I fix it? I got the following Exception message. Code is below:

线程 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 );
    } 
}


推荐答案

问题是您正在读取分数为 String ,并试图将分数放入 Integer 的ArrayList中。

The problem is that you are reading in the scores as String, and trying to put the scores in an ArrayList of Integer.

您需要将分数读取为整数,或者将分数解析为整数。

You need to either read the score as an integer, or parse the score into an integer.

请参见下面的API链接

See API links below

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)

这篇关于为什么会收到ClassCastException以及如何解决?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆