题目
根据教师的花名册,找到出勤最多的人。
输入格式:
出勤记录单行给出,数据直接使用空格分割。
输出格式:
单行输出(若有多人,人名直接使用空格分割,结尾处没有空格)。
输入样例:
在这里给出一组输入。例如:
zs ls ww ml zs ls ml zs ww
输出样例:
在这里给出相应的输出。例如:
zs
正文
此处为代码(便于复制):
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String people = sc.nextLine();
String[] peopleArr = people.split(" ");
String peopleMax = "";
int max = 0;
for (int i = 0; i < peopleArr.length; i++) {
int num = 0;
for (int j = i; j < peopleArr.length; j++) {
if (peopleArr[i].equals(peopleArr[j])) {
num += 1;
}
}
if (max <= num) {
max = num;
}
}
for (int i = 0; i < peopleArr.length; i++) {
int num = 0;
for (int j = i; j < peopleArr.length; j++) {
if (peopleArr[i].equals(peopleArr[j])) {
num += 1;
}
}
if (max == num) {
if (peopleMax.isEmpty()) {
peopleMax = peopleArr[i];
} else peopleMax = peopleMax + " " + peopleArr[i];
}
}
System.out.println(peopleMax);
}
}
注解
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //相信有基础的同学都知道,是通过 Scanner 类来获取用户的输入 String people = sc.nextLine(); //这是对应题目所说的单行输入一行数据,用字符串people来存储 //这里补充一下nextLine()方法,nextLine()方法是读取一整行,以一个回车符作为结束标记停止扫描 String[] peopleArr = people.split(" "); //创建一个字符串数组peopleArr,用split()方法来分割其中的空格 String peopleMax = ""; //保存出勤数量最多的人名 int max = 0; //最高出勤数 for (int i = 0; i < peopleArr.length; i++) { //for循环通过数组peopleArr的数量来限制循环次数 int num = 0; //暂定一个num为个人的出勤数量 for (int j = i; j < peopleArr.length; j++) { //这里的j是i,是要把自己本身算进去,然后向后遍历剩下的人,同样是用数组peopleArr的数量来限制循环次数 if (peopleArr[i].equals(peopleArr[j])) { //判断当前的数组i是否完全相等于当前的数组j //这里补充一下equals()方法,equals()方法是用来比较两个对象是否等价 num += 1; //当每出现一次相同的值,num的值+1 } } if (max < num) { //判断最高出勤数是否小于某个人的出勤数 max = num; //判断小于时,最高出勤数小于该人的出勤数 } } //这个循环只为了选出最高的出勤数 for (int i = 0; i < peopleArr.length; i++) { //这类的代码同上 int num = 0; for (int j = i; j < peopleArr.length; j++) { if (peopleArr[i].equals(peopleArr[j])) { num += 1; } } if (max == num) { //如果这时的最高出勤数和此人的出勤数相等则将会被选中 if (peopleMax.isEmpty()) { //这里是判断他是否是第一个人 //这里补充一下isEmpty()方法,isEmpty() 方法用于判断字符串是否为空 peopleMax = peopleArr[i]; //为空则直接添加当前人的名字 } else peopleMax = peopleMax + " " + peopleArr[i]; //不为空则先加个空格再加人名,对应题目的输出格式 } } System.out.println(peopleMax); //输出出勤数量最多的人名 } }
代码演示
输入题目的输入样例:zs ls ww ml zs ls ml zs ww
当其中的ls多了一次出勤后:zs ls ww ml zs ls ml zs ww ls
当其中的ww又多了一次出勤后:zs ls ww ml zs ls ml zs ww ls ww
感谢您的观看,注解大部分都是大白话且是手打的,若是能给我个赞那将是对我莫大的称赞
若还有不懂的地方,欢迎来评论区询问