2 import java
.util
.Arrays
;
4 public class Eye
implements Comparable
<Eye
> {
5 private String strColor
;
7 private String
[] colorsList
= {"black", "blue", "brown", "green"};
22 public String
getStrColor() {
26 public void setStrColor(String strColor
) {
27 if (validateColor(strColor
)) {
28 this.strColor
= strColor
;
30 throw new IllegalArgumentException("Color must be" + this.colorListToString());
34 public String
[] getColorsList() {
41 public Color
getColor() {
48 public void setColor(String color
) {
49 if (validateColor(color
)) {
50 if (color
.equals("brown"))
51 this.color
= new Color(88, 41, 0);
53 this.color
= Color
.getColor(color
);
55 throw new IllegalArgumentException("Color must be" + this.colorListToString());
63 private boolean validateColor(String color
) {
64 for (String c
: colorsList
) {
65 if (color
.equals(c
)) {
72 private void sortColorList() {
73 Arrays
.sort(this.colorsList
);
81 public int compareTo(Eye eye
) {
82 double r_diff
= this.getColor().getRed() - eye
.getColor().getRed();
83 double g_diff
= this.getColor().getGreen() - eye
.getColor().getGreen();
84 double b_diff
= this.getColor().getBlue() - eye
.getColor().getBlue();
85 //See https://en.wikipedia.org/wiki/Color_difference
86 Double distance
= Math
.sqrt(2 * Math
.pow(r_diff
, 2) + 4 * Math
.pow(g_diff
, 2) + 3 * Math
.pow(b_diff
, 2));
87 return distance
.intValue();
90 private String
colorListToString() {
91 StringBuilder stringBuilder
= new StringBuilder();
92 for (String c
: colorsList
) {
93 stringBuilder
.append(" ");
94 stringBuilder
.append(c
);
96 return stringBuilder
.toString();