为什么会收到ClassCastException以及如何解决? [英] Why do I get a ClassCastException and how do I fix it?
问题描述
为什么会收到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屋!