本文目录导读:

假设您有一个区域地图或防守数据列表,需要统计满足特定条件(漏洞)的次数。
基于对象列表的统计(最常见)
假设您有一个防守点的数据对象,每个点有坐标、防守强度等属性。
import java.util.ArrayList;
import java.util.List;
// 1. 定义防守点的实体类
class DefensePoint {
private String areaId; // 区域ID
private double x, y; // 坐标
private int strength; // 防守强度 (1-10)
private boolean isCovered; // 是否有队友协防
public DefensePoint(String areaId, double x, double y, int strength, boolean isCovered) {
this.areaId = areaId;
this.x = x;
this.y = y;
this.strength = strength;
this.isCovered = isCovered;
}
// Getter 方法(略,根据实际需要添加)
public String getAreaId() { return areaId; }
public int getStrength() { return strength; }
public boolean isCovered() { return isCovered; }
}
// 2. 漏洞检测逻辑
public class DefenseAnalyzer {
/**
* 统计防守漏洞次数
* 规则示例:
* 1. 防守强度低于3
* 2. 或者 该点未被协防且强度低于5
* 3. 或者 连续3个点强度都低于4(连续漏洞)
*/
public static int countVulnerabilities(List<DefensePoint> points) {
if (points == null || points.isEmpty()) return 0;
int vulnerabilityCount = 0;
int consecutiveWeak = 0; // 连续弱点计数
for (DefensePoint point : points) {
boolean isVulnerable = false;
// ---- 核心漏洞判断逻辑(根据实际业务修改)----
// 规则1:强度不足
if (point.getStrength() < 3) {
isVulnerable = true;
}
// 规则2:未协防且强度偏低
if (!point.isCovered() && point.getStrength() < 5) {
isVulnerable = true;
}
// ---- 判断结束 ----
if (isVulnerable) {
vulnerabilityCount++;
// 连续漏洞逻辑(可选)
consecutiveWeak++;
if (consecutiveWeak >= 3) {
vulnerabilityCount++; // 额外惩罚或计数
}
} else {
consecutiveWeak = 0; // 重置
}
}
return vulnerabilityCount;
}
public static void main(String[] args) {
// 模拟测试数据
List<DefensePoint> points = new ArrayList<>();
points.add(new DefensePoint("A1", 0, 0, 8, true));
points.add(new DefensePoint("A2", 1, 1, 2, false)); // 漏洞
points.add(new DefensePoint("A3", 2, 2, 4, false)); // 漏洞(未协防且强度<5)
points.add(new DefensePoint("B1", 3, 3, 7, true));
points.add(new DefensePoint("B2", 4, 4, 5, false)); // 非漏洞(强度=5,未协防但规则要求<5)
points.add(new DefensePoint("B3", 5, 5, 1, false)); // 漏洞
int count = countVulnerabilities(points);
System.out.println("检测到防守漏洞次数: " + count);
}
}
基于二维矩阵地图(网格)统计
如果您有类似网格地图,可以统计每个网格是否为漏洞区。
public class GridDefenseAnalyzer {
/**
* 统计漏洞区域
* @param map 二维数组,数值代表防守强度(0为无人防守,1-5为强度)
* @return 漏洞次数(强度为0或低于2的格子数量)
*/
public static int countGridVulnerabilities(int[][] map) {
int count = 0;
for (int i = 0; i < map.length; i++) {
for (int j = 0; j < map[i].length; j++) {
if (map[i][j] < 2) { // 假设漏洞条件
count++;
}
}
}
return count;
}
public static void main(String[] args) {
int[][] defenseMap = {
{5, 4, 0, 1},
{3, 2, 1, 4},
{0, 0, 2, 5},
{1, 3, 4, 6}
};
System.out.println("漏洞格子数: " + countGridVulnerabilities(defenseMap));
// 输出:漏洞格子数: 6
}
}
Java 8+ 流的简洁写法
import java.util.Arrays;
import java.util.List;
public class StreamAnalyzer {
public static void main(String[] args) {
// 假设是防守点强度列表
List<Integer> strengths = Arrays.asList(8, 2, 4, 7, 5, 1);
long vulnCount = strengths.stream()
.filter(s -> s < 3 || s == 1) // 自定义漏洞规则
.count();
System.out.println("漏洞出现次数: " + vulnCount);
// 输出: 2 (值为2和1)
}
}
如果您的“漏洞”是特定模式(连续命中)
您可能需要回溯算法或状态机,请提供具体的业务描述,我再帮您编写对应的检测逻辑。
请把您的具体“漏洞”判断条件告诉我,我可以帮您微调代码。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播