课堂练习-找水王
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
实验代码:
bean.java
public class bean { private int id; private String userid; private String type; public bean(int id,String userid,String type) { this.id=id; this.userid=userid; this.type=type; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getUserid() { return userid; } public void setUserid(String userid) { this.userid = userid; } }
dao.java
import java.util.ArrayList; import java.util.List; public class dao { public static void main(String[] args) { bean[] num=new bean[10]; num[0]=new bean(1,"001","发帖"); num[1]=new bean(2,"002","回帖"); num[2]=new bean(3,"001","发帖"); num[3]=new bean(4,"003","回帖"); num[4]=new bean(5,"001","发帖"); num[5]=new bean(6,"001","回帖"); num[6]=new bean(7,"005","回帖"); num[7]=new bean(8,"001","发帖"); num[8]=new bean(9,"001","发帖"); num[9]=new bean(10,"006","回帖"); display(num); } public static void display(bean[] num) { int c = -1; int n=num.length; int m=0; String a=num[0].getUserid(); for(int i=0;i<n;i++) { if(a.equals(num[i].getUserid())) { m++; } else m--; if(m<0) { a=num[i].getUserid(); m=0; } } System.out.println("水王是:"+a); } }
实验思路:
设计一个计数器m,假设第一个为水王,之后进行比较,如果相同则计数器加一,不同则减一,当计数器小于0时重新设置水王重新计算。
实验截图:
实验总结:
本次实验中最重要的一点是水王永远是发帖数量最多的那一个,在此基础上进行筛选会方便的多,因此在看待问题时,要先抓住事物的特性。