找水王

三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他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]);
    }
}

原文地址:https://www.cnblogs.com/quyangzhangsiyuan/p/11030982.html