Предисловие: я работаю с Processing и никогда не использовал Java.
У меня есть эта функция обработки, предназначенная для поиска и возврата наиболее распространенного цвета среди пикселей текущего изображения, над которым я работаю. последняя строка жалуется, что «метод color (int) в типе PApplet не применим для аргументов (String)». Что случилось?
color getModeColor() {
HashMap colors = new HashMap();
loadPixels();
for (int i=0; i < pixels.length; i++) {
if (colors.containsKey(hex(pixels[i]))) {
colors.put(hex(pixels[i]), (Integer)colors.get(hex(pixels[i])) + 1);
} else {
colors.put(hex(pixels[i]),1);
}
}
String highColor;
int highColorCount = 0;
Iterator i = colors.entrySet().iterator();
while (i.hasNext()) {
Map.Entry me = (Map.Entry)i.next();
if ((Integer)me.getValue() > highColorCount) {
highColorCount = (Integer)me.getValue();
highColor = (String)me.getKey();
}
}
return color((highColor);
}
Обработка документов , на которые я смотрю, довольно редка в HashMap, поэтому я не совсем уверен, что происходит внутри нее, но я увеличивал то, что там доступно, с помощью Документы Java они указывают. Но я на самом деле не зацикливаюсь на том, что происходит с типами. Похоже, ключ в HashMap должен быть строкой, а значение должно быть целым числом, но они выглядят как объекты, которые я должен привести к использованию перед использованием. Так что я не уверен, что это вызывает этот глюк.
Или, может быть, есть только проблема с цветом (), но документы говорят, что он примет шестнадцатеричное значение, которое я и пытался использовать в качестве ключа в HashMap (где я скорее просто используйте сам цвет).
Теперь, когда я говорил об этом, я думаю, что функция color () видит шестнадцатеричное значение как int, но функция hex () преобразует цвет в строку. И я не могу преобразовать эту строку в int. Я думаю, что я мог бы разобрать подстроки и восстановить цвет, но должен быть какой-то более элегантный способ сделать это, которого мне не хватает. Должен ли я просто создать класс ключ-значение-пара, который будет содержать цвет и число, и использовать их массив?
Заранее благодарим за любую помощь или предложения, которые вы можете предоставить!