标题:(求助)看看我的程序在输出时有什么问题
只看楼主
ma7351996
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-11-26
 问题点数:0 回复次数:4 
(求助)看看我的程序在输出时有什么问题
import java.util.*;
class TheKey implements Comparable
{
     int  mark=0;
     TheKey(int mark)
     {
         this.mark=mark;
     }
     
     public int  compareTo(Object b)
     {
         TheKey st=(TheKey)b;
         if(this.mark==st.mark)
         {
             return -1;
         }
         else
         {
             return  (this.mark-mark);
         }
     }
}

class Student
{
    String name;
    int  englishMark;
    int  mathMark;
   
    Student(String name, int e, int m)
    {
        englishMark=e;
        mathMark=m;
        this.name=name;
    }
}

public class ExTreeMap
{
    public static void main(String[] args)
    {
        Student st[]=new Student[5];
        for(int i=0; i<5; i++)
        {
            Scanner input=new Scanner(System.in);
            System.out.println("请输入第"+(i+1)+"学生的信息:");
            System.out.printf("输入姓名:");
            String name=input.nextLine();
            System.out.printf("输入英语成绩:");
            int e=input.nextInt();
            System.out.printf("输入数学成绩:");
            int m=input.nextInt();
            st[i]=new Student(name, e, m);      
               
        }
        
        TreeMap<TheKey, Student>  treemap=
            new TreeMap<TheKey, Student>(new Comparator<TheKey>()
                                                                    {
                                                                         public int  compare(TheKey a, TheKey b)
                                                                         {
                                                                               return  ( b);
                                                                         }
                                                                    });
          treemap.put(new TheKey(st[0].englishMark),st[0]);
          treemap.put(new TheKey(st[1].englishMark),st[1]);
          treemap.put(new TheKey(st[2].englishMark),st[2]);
          treemap.put(new TheKey(st[3].englishMark),st[3]);
          treemap.put(new TheKey(st[4].englishMark),st[4]);
         
          Collection<Student> collection=treemap.values();
          Iterator<Student>  iter=collection.iterator();
         while(iter.hasNext())
         {
           Student storder=iter.next();
           System.out.println("姓名:"+storder.name+"  英语成绩"+storder.englishMark);
         }   

最后的这个while部分在输出时只能输出一个元素,怎么回事?
请大家帮忙看看,先谢过了
            
            
    }
}
搜索更多相关主题的帖子: 输出 时有 
2007-11-26 16:04
StarScar
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2005-1-3
得分:0 
并不是while只能输出一个元素 而是你自己定义的compareTo方法有问题,按照你的代码,那么只有在英语成绩相等的时候才能添加进TreeMap
public int  compareTo(Object b)
     {
         TheKey st=(TheKey)b;
         if(this.mark==st.mark)
         {
             return -1;    //改成return = 0;
         }
         else
         {
             return  (this.mark-mark);     //改成return = -1;或者1
         }
     }
按我改的你试试
再改改你的逻辑

[[italic] 本帖最后由 StarScar 于 2007-11-26 21:18 编辑 [/italic]]
2007-11-26 21:16
canyue
Rank: 1
等 级:新手上路
威 望:1
帖 子:159
专家分:0
注 册:2007-10-4
得分:0 
收藏,有待研究。

别看我现在只有这么亮,总有一天会月圆的!
2007-11-26 21:28
hopemosue
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-10-20
得分:0 
提点小意见啊,是不是声明变量的时候只能在方法中初始化啊,

小弟初学struts,望学姐学哥多多指教
2007-12-06 12:04
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
得分:0 
看你在哪儿声明的变量了

I'm here, as always...
2007-12-06 12:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-188512-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.573581 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved