日期:2014-05-20  浏览次数:20864 次

实现对学生的成绩按总分排序,程序代码如下:本人感谢java不久,望各位前辈多多指点,谢谢
/*Exception in thread "main" java.lang.NumberFormatException: For input string: ""

        at java.lang.NumberFormatException.forInputString(NumberFormatException.
java:65)
        at java.lang.Integer.parseInt(Integer.java:504)
        at java.lang.Integer.parseInt(Integer.java:527)
        at Comparable03.main(Comparable03.java:10)
请按任意键继续. . .*/
//实现对学生成绩排名
import java.util.*;
import java.lang.String;
public class Comparable03{
static String str="|张飞:60,90,87,76,87|关羽:60,90,87,76,87|刘备:76,90,76,76,87|曹操:60,76,87,76,87|诸葛亮:60,90,87,76,87|孙权:60,76,77,76,87|黄盖:87,90,87,76,87|庞涓:60,87,87,76,87|赵子龙:60,90,87,76,87|曹植:60,76,87,76,87|曹培:60,90,87,76,87|周瑜:60,90,87,76,87";
public static void main(String[] args){
String sArr[]=str.split("\\|");
Student[] st=new Student[sArr.length];
for(int i=0;i<sArr.length;i++){
st[i]=new Student(sArr[i].split("\\:")[0],Integer.parseInt(sArr[i].split("\\,")[0]),Integer.parseInt(sArr[i].split("\\,")[1]),Integer.parseInt(sArr[i].split("\\,")[2]),Integer.parseInt(sArr[i].split("\\,")[3]),Integer.parseInt(sArr[i].split("\\,")[4]));
}
Arrays.sort(st);
System.out.println("姓名     语文       数学     英语    化学    生物    总分");
for(Student s:st){
System.out.println(s);
}


}
}
class Student implements Comparable<Student>{
private String name;
private int chain;
private int math;
private int yy;
private int hx;
private int sw;
private int  zf;
public Student(String name,int chain,int math,int yy,int hx,int sw){
this.name=name;
this.chain=chain;
this.math=math;
this.yy=yy;
this.hx=hx;
this.sw=sw;
this.zf=this.chain+this.math+this.yy+this.hx+this.sw;

}
public int compareTo(Student s){
int cha=this.zf-s.zf;
if(cha!=0){
return cha;
}else{
return this.name.compareTo(s.name);
}
}
public String toString(){

String s=name+"  "+chain+"  "+math+"  "+yy+" "+hx+" "+sw+" "+zf+" ";
return s;
}
}//为什么老是报上面的异常啊我调试了好长时间

------解决方案--------------------
你的数组分隔后出现了空字符
import java.util.Arrays;

public class ttt{
static String str="张飞:60,90,87,76,87
------解决方案--------------------
关羽:60,90,87,76,87
------解决方案--------------------
刘备:76,90,76,76,87
------解决方案--------------------
曹操:60,76,87,76,87
------解决方案--------------------
诸葛亮:60,90,87,76,87
------解决方案--------------------
孙权:60,76,77,76,87
------解决方案--------------------
黄盖:87,90,87,76,87
------解决方案--------------------
庞涓:60,87,87,76,87
------解决方案--------------------
赵子龙:60,90,87,76,87
------解决方案--------------------
曹植:60,76,87,76,87
------解决方案--------------------
曹培:60,90,87,76,87
------解决方案--------------------
周瑜:60,90,87,76,87";
public static void main(String[] args){
    String sArr[]=str.split("\\
------解决方案--------------------
");
    String[] st=new String[sArr.length];
    for(int i=0;i<sArr.length;i++){
        String nameString=sArr[i].split(":")[0];
        String coreString=sArr[i].split(":")[1];
    Student st1=new Student(sArr[i].split(":")[0],Integer.parseInt(coreString.split(",")[0]),Integer.parseInt(coreString.split(",")[1]),Integer.parseInt(coreString.split(",")[2]),Integer.parseInt(coreString.split(",")[3]),Integer.parseInt(coreString.split(",")[4]));
    System.out.println("姓名     语文       数学     英语    化学    生物    总分");