使用java做一个防作弊系统:用for或者while实现对自己学号中每一位数的分类输出结果如下: 我是X班XX,我的学号是200405030118 其中奇数有531 偶数有2048(重复的数字不输出)
时间: 2024-10-21 21:02:17 浏览: 28
在Java中,你可以创建一个方法来解析学号并按奇偶性分类输出。首先,我们需要定义一个辅助函数来检查数字是否为奇数。然后使用`for`循环遍历学号中的每一个字符,将其转换成数字,判断奇偶性并记录。下面是一个简单的示例:
```java
import java.util.HashSet;
public class CheatDetectionSystem {
public static void main(String[] args) {
String studentInfo = "我是X班XX,我的学号是200405030118";
String studentId = extractStudentNumber(studentInfo);
classifyNumbersByParity(studentId);
}
// 提取学号
private static String extractStudentNumber(String info) {
return info.split("我的学号是")[1].trim();
}
// 按奇偶性分类并输出
private static void classifyNumbersByParity(String studentId) {
StringBuilder oddNumbers = new StringBuilder();
HashSet<Integer> evenNumbers = new HashSet<>();
boolean isDuplicate = false;
for (char c : studentId.toCharArray()) {
int num = Character.getNumericValue(c);
if (num % 2 == 0) {
evenNumbers.add(num);
// 如果找到重复数字,设置标志并跳过后续的计数
if (evenNumbers.contains(num)) {
isDuplicate = true;
continue;
}
} else {
oddNumbers.append(num);
}
}
// 输出奇数部分
System.out.println("奇数有:" + oddNumbers.toString());
// 输出偶数部分(去除重复)
if (!isDuplicate) {
System.out.println("偶数有:" + evenNumbers.stream().distinct().sorted().collect(Collectors.joining()));
}
}
}
```
上述代码首先提取出学号,然后遍历学号中的每个数字并按奇偶性分类。如果是偶数并且发现重复,则标记为重复并跳过后续计数。最后,打印出奇数和不重复的偶数。
注意:在这个例子中,我们假设学号不会包含其他非数字字符。如果存在这种情况,你需要先过滤掉非数字字符。
阅读全文