软件工程个人作业05

程序题目:

•三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
•如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?

一、设计思想

根据两两相消的思想,发帖数过半的ID在与其他不同ID比较,相同则计数器加一,不同计数器减一。当计数器为负数时,水王依次下轮。

二、源代码

import java.util.InputMismatchException;
import java.util.Scanner;

public class Finding {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
    
        for(int m=0;;)                           //按照用户需求无限循环
        {
            int judge=0;
            Scanner in=new Scanner(System.in);
            int n; 
            System.out.println("请输入帖子的个数:");
            n=in.nextInt();
         
            System.out.println("请输入ID(序号为整数):");
            int ID[]=new int [n];
            try                              //捕捉输入错误
            {
                for(int i=0;i<n;i++)
                {
                    ID[i]=in.nextInt();
                }
             }
            catch(InputMismatchException e)
            {
                System.out.println("输入不合法!请输入整数!");
                judge=1;
            }
         
            int shuiwang=ID[0];int temp=0;    //从第一个ID开始,第一个即为水王
            for(int i=0;i<n-1;i++)
            {                                 //当此时水王与下一个ID相同时,计数器temp+1
                if(shuiwang==ID[i+1])
                {
                    temp++;
                }
                else 
                {                            //当此时水王与下一个ID不相同时,计数器temp-1
                    temp--;
                }
                if(temp<0)
                {
                    shuiwang=ID[i+1];         //当temp小于0时说明出现次数少,换下一个ID为临时水王
                }
            }
            if(judge!=1)
                System.out.println("水王是:"+shuiwang);
            
            System.out.println("继续寻找水王请按任意键,退出请按q:");
            String s=in.next();
            if(s.equals("q"))
                System.exit(0);
            else
                continue;    
            in.close();
        }
    }
}

三、运行结果截图

四、个人总结

小程序体现一个人的解决问题的思路,只有多练才能提高技术,要再接再厉。

原文地址:https://www.cnblogs.com/love528/p/5512674.html