软件工程个人作业13

•三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
•如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
•随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?
设计思想
之前“水王”发帖数目超过了帖子数目的一半,所以直接找帖子数超过一半的ID即可,这次找第二个“水王”只需要在把ID的列表去掉原来的“水王”,再次寻找即可。
代码实现:
 1 package finding;
 2 import java.util.InputMismatchException;
 3 import java.util.Scanner;
 4 
 5 public class finding {
 6     public static void main(String[] args) {
 7         // TODO 自动生成的方法存根
 8         for(int m=0;;)
 9         {
10             int bug=0;
11             Scanner sc =new Scanner(System.in);
12             System.out.println("请输入ID的个数:");
13             int n=sc.nextInt();
14             System.out.println("请输入ID(为整数):");
15             int ID[]=new int [n];
16             try                              //捕捉输入错误
17             {
18                 for(int i=0;i<n;i++)
19                 {
20                     ID[i]=sc.nextInt();
21                 }
22             }
23             catch(InputMismatchException e)
24             {
25                  System.out.println("输入不合法!请输入整数!");
26                  bug=1;
27              }
28             if(bug!=1)
29             {
30                 int shuiwang[]=new int [2];
31                 for(int l=0;l<2;l++)
32                 {
33                     shuiwang[l]=ID[0];                 //从第一个ID开始,第一个即为水王
34                     int temp=1;
35                     for(int i=0;i<n-1;i++)
36                     {
37                         for(int j=i+1;j<n;j++)
38                         {
39                             if(shuiwang[0]==ID[j])         //当此时水王与下一个ID相同时,计数器temp+1
40                             {
41                                 temp++;
42                             }
43                         }
44                         if(temp<=n/2)
45                         {
46                             shuiwang[0]=ID[i+1];         //当temp小于总帖子数的一半时,换下一个ID为临时水王
47                         }
48                     }
49                     for(int i=0;i<n-temp;i++)
50                     {
51                         for(int j=0;j<n;j++)
52                         {
53                             if(ID[j]!=shuiwang[0])
54                             {
55                                 ID[i]=ID[j];
56                                 break;
57                             }
58                              
59                         } 
60                      }
61                      n=n-temp;
62                 }                
63                  System.out.println("水王是(发帖数超过总贴数一半的ID):"+shuiwang[0]+"   "+shuiwang[1]);
64              }
65             System.out.println("继续寻找水王请按n,退出请输入s:");
66             String s=sc.next();
67             if(s.equals("s"))
68                 System.exit(0);
69             else
70                 continue;    
71             sc.close();
72         }
73 
74     }
75 }

 

截图:

转载于:https://www.cnblogs.com/gzgz/p/5535838.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值