gpt4 book ai didi

java - 检查几何形状

转载 作者:行者123 更新时间:2023-11-30 03:02:36 25 4
gpt4 key购买 nike

我有一个由四 (4) 个数字组成的数组,按 A、B、C 和 D 的顺序表示多边形的边。我需要检查该数组并确定该多边形是正方形、矩形还是不是其他多边形。

我正在跟踪检查数组索引 0、1、2 中的正方形、矩形和多边形。

这是我当前的代码:

static void checkType(int[] arr, int[] check) {
Map<Integer, Integer> map = new HashMap<>();

for (int i = 0; i < arr.length; i++) {
if (map.containsKey(arr[i])) {
map.put(arr[i], map.get(arr[i]) + 1);
} else {
map.put(arr[i], 1);
}
}

if (map.size() == 1) check[0]++;
else if (map.size() == 2) check[1]++;
else check[2]++;
}

代码仍然无法工作。任何帮助表示赞赏。

最佳答案

我相信您正在尝试计算一条边出现的次数,以确定几何形状是矩形、正方形还是其他形状。

添加枚举可能会让您的代码更容易理解。

randEntryValue 方法将在映射中提取随机条目并检查其值。我们不关心检查哪个值,但我们必须确保出现的是2

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class PolygonChecker {
private enum PolygonType {
RECTANGLE,
SQUARE,
OTHER;
}

public static void main(String[] args) {
Map<PolygonType, Integer> map = new HashMap<PolygonType, Integer>();

checkType(new int[] {2, 4, 2, 4}, map); // Rectangle
checkType(new int[] {3, 3, 3, 3}, map); // Square
checkType(new int[] {4, 4, 4, 5}, map); // Other
checkType(new int[] {1, 2, 3, 4}, map); // Other
checkType(new int[] {1, 2, 3, 4, 5}, map); // Other

Iterator<Entry<PolygonType, Integer>> it = map.entrySet().iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}

static void checkType(int[] sideArr, Map<PolygonType, Integer> check) {
Map<Integer, Integer> map = new HashMap<Integer, Integer>();

if (sideArr.length == 4) {
for (int i = 0; i < sideArr.length; i++) {
incr(map, sideArr[i], 1);
}

if (map.size() == 1) {
incr(check, PolygonType.SQUARE, 1);
} else if (map.size() == 2 && randEntryValue(map) == 2) {
incr(check, PolygonType.RECTANGLE, 1);
} else {
incr(check, PolygonType.OTHER, 1);
}
} else {
incr(check, PolygonType.OTHER, 1);
}
}

@SuppressWarnings("unchecked")
static <K> Entry<K, Integer> randEntry(Map<K, Integer> map) {
Object[] entries = map.entrySet().toArray();
return (Entry<K, Integer>) entries[(int) (Math.random() * entries.length)];
}

static <K> int randEntryValue(Map<K, Integer> map) {
return randEntry(map).getValue().intValue();
}

// Generic increment function.
static <K> void incr(Map<K, Integer> map, K key, int amount) {
if (map.containsKey(key)) {
map.put(key, map.get(key) + amount);
} else {
map.put(key, amount);
}
}
}

输出

RECTANGLE=1
SQUARE=1
OTHER=3

关于java - 检查几何形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35583426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com