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" + new Eye().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
);
56 throw new IllegalArgumentException("Color must be" + new Eye().colorListToString());
64 private boolean validateColor(String color
) {
65 for (String c
: colorsList
) {
66 if (color
.equals(c
)) {
73 private void sortColorList() {
74 Arrays
.sort(this.colorsList
);
82 public int compareTo(Eye eye
) {
83 double r_diff
= this.getColor().getRed() - eye
.getColor().getRed();
84 double g_diff
= this.getColor().getGreen() - eye
.getColor().getGreen();
85 double b_diff
= this.getColor().getBlue() - eye
.getColor().getBlue();
86 //See https://en.wikipedia.org/wiki/Color_difference
87 Double distance
= Math
.sqrt(2 * Math
.pow(r_diff
, 2) + 4 * Math
.pow(g_diff
, 2) + 3 * Math
.pow(b_diff
, 2));
88 return distance
.intValue();
91 private String
colorListToString() {
92 StringBuilder stringBuilder
= new StringBuilder();
93 for (String c
: colorsList
) {
94 stringBuilder
.append(" ");
95 stringBuilder
.append(c
);
97 return stringBuilder
.toString();