问题描述:
找出签到数据中重复签到的同学
输入格式:
[1, 2, 2, 3, 4, 5, 4],数字表示收集的签到的学生的学号
输出格式:
2 4
输出重复签到的学生学号,从小到大输出,数字后面有一个空格符
输入样例:
在这里给出一组输入。例如:
[1, 2, 2, 3, 4, 5, 4]
输出样例:
在这里给出相应的输出。例如:
2 4
代码思路:
- 创建一个名为
tmp
的整数数组,长度为100,用来存储可能出现的学生的编号。 - 从标准输入中读取一行字符串
s
,这个字符串应该包含学生的编号,每个编号之间用逗号,
、方括号[]
或尖括号<>
分隔。 - 使用
split
方法将字符串s
拆分成字符串数组a
。 - 遍历这个数组,查找重复的元素。如果找到一个元素与另一个元素相同,并且它们在数组中的位置不同(即它们不是同一个元素),那么这个元素就是一个重复的元素。
- 将找到的重复元素转换成整数,并检查这个整数是否已经在
tmp
数组中出现过。如果没有出现过,就在控制台上输出这个元素,并在tmp
数组中将对应的索引位置设为1,表示这个元素已经出现过。
代码:
import java.util.Scanner;
public class Main{
public static void main(String []args){
String []a;
String s;
int []tmp = new int[100];
Scanner scan = new Scanner(System.in);
s = scan.nextLine();
int cnt = 0;
a = s.split(", |]|\\[");
int len = a.length;
for(int i=1; i<len; i++){
for(int j=1; j<len; j++){
if(a[i].equals(a[j])&&i!=j){
int num = Integer.valueOf(a[i]);
if(tmp[num]!=1){
tmp[num] = 1;
System.out.print(a[i]+" ");
}
}
}
}
}
}
运行效果: