找水王
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
一开始的思路是建个文件,从文件中读取,分为三列,第一列是序号,第二列是发帖ID号,第三个是回复ID号,读取了之后分别存放在三个数组里,然后取第二个数组中ID出现次数的最大值为水王,但是尝试写了之后发现空指针异常,代码如下
package sb; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class Sb { public static void main(String args[]) throws IOException { String line = null; String sp[] = null; String snum[] = new String[100]; int temp = 0; int a[]=new int[100]; int c=1; int d=0; String b; File file = new File("Number.txt"); BufferedReader br = new BufferedReader(new FileReader(file)); while((line=br.readLine())!=null) { sp = line.split(" ");//按空格进行分割 for(int i=0;i<sp.length;i++){ snum[temp] = sp[i]; temp++; } } for(int i=0;i<snum.length;i=i+3) { sb1[i]=snum[i]; } for(int i=1;i<snum.length;i=i+3) { sb2[i]=snum[i]; } for(int i=2;i<snum.length;i=i+3) { sb3[i]=snum[i]; } for(int i=0;i<sb1.length;i++) { //b=sb2[i]; for(int m=0;m<sb1.length;m++) { if(sb2[m].equals(sb2[i])) { c++; } } for(int n=0;n<sb1.length;n++) { if(sb3[n].equals(sb2[i])) { c++; } } a[i]=c; } for(int i=0;i<a.length;i++) { if(d<a[i]) { d=i; } } System.out.println("水王是:"+sb2[d]); } }
然后我把文件中的三列改成了一列,成功找出,但是并未实现查找回复ID中每个都存在水王的功能,代码如下
import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class Sb { public static void main(String args[]) throws IOException { String line = null; String sp[] = null; String snum[] = new String[100]; int temp = 0; int a[]=new int[100]; int c=1; int d=0; File file = new File("Number.txt"); BufferedReader br = new BufferedReader(new FileReader(file)); while((line=br.readLine())!=null) { sp = line.split(" ");//按空格进行分割 for(int i=0;i<sp.length;i++){ snum[temp] = sp[i]; temp++; } } for(int i=0;i<sp.length;i++) { for(int j=i;j<sp.length;j++) { if(snum[i].equals(snum[j])) { c++; } } a[i]=c; } for(int i=0;i<a.length;i++) { if(d<a[i]) { d=i; } } System.out.println("水王是:"+snum[d]); } }