题目要求:
随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。
据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?
设计思路:
1、输入总帖子数x
2、定义一个一维数组a[x],为作者id。设置循环输入作者id
3、定义三个小水王,以及其净帖子数
4、再设置一个循环,按照顺序来依次进行比较,如果净帖子数大于0则作者id不变,如果作者id等于0,则将此id作为新的小水王id,如此循环x次
5、最后剩余的作者id即为水王id
源程序:
1 import java.util.Scanner; 2 3 4 public class water { 5 6 public static void main(String[] args) { 7 // TODO 自动生成的方法存根 8 System.out.println("共有多少个帖子(请输入大于3的数)"); 9 Scanner input =new Scanner(System.in); 10 int x=input.nextInt(); 11 String a[]=new String[x]; 12 //发帖子情况 13 for(int i=0;i<x;i++) 14 { 15 System.out.println("请输入第"+(i+1)+"个帖子的作者id"); 16 Scanner input1 =new Scanner(System.in); 17 a[i]=input1.nextLine(); 18 } 19 //找水王 20 String s1="";//小水王1 21 String s2="";//小水王2 22 String s3="";//小水王3 23 int c1=0; 24 int c2=0; 25 int c3=0;//c1,c2,c3分别是小水王最后净帖子数,如果c1,c2,c3不是正数则不是水王 26 for(int i=0;i<x;i++) 27 { 28 if(s1.equals(a[i]))//如果相等净帖子数加1 29 { 30 c1++; 31 } 32 else if(s2.equals(a[i])) 33 { 34 c2++; 35 } 36 else if(s3.equals(a[i])) 37 { 38 c3++; 39 } 40 else if(c1==0) 41 { 42 s1=a[i]; 43 } 44 else if(c2==0) 45 { 46 s2=a[i]; 47 } 48 else if(c3==0) 49 { 50 s3=a[i]; 51 } 52 else//如果都不相等净帖子数均减1 53 { 54 c1--; 55 c2--; 56 c3--; 57 } 58 } 59 System.out.println("水王是"+s1+" "+s2+" "+s3); 60 } 61 62 }
运行截图:
结果分析:这次要寻找三个小水王,为了避免其重复,所以初始化要通过循环来进行,将三个小水王按照循环进行的顺序初始化为最先出现的三个不同的id;这样就不能将净帖子数初始化为1,需初始化为0,只有为小水王赋新值时才能将其置为1.
时间: 2024-11-10 01:04:02