11package google .sc21 .sortify ;
22
3- import java .io .Serializable ;
43import java .util .LinkedList ;
54import java .util .List ;
65import java .util .Scanner ;
76
87public class Junk {
98 private String name ;
10- private List <String > aliases = new LinkedList <String >();
9+ private List <String > aliases = new LinkedList <>();
1110 private String guidance ;
1211 private String link ;
12+ private float accuracy ;
1313
1414 public Junk (String junkName , List <String > junkAliases , String junkGuidance , String junkURL ) {
1515 name = junkName ;
@@ -24,43 +24,83 @@ public static Junk newItemFromCSV(Scanner scanner) {
2424 item .name = scanner .next ();
2525 item .link = scanner .next ();
2626 String temp = scanner .next ().toLowerCase ();
27- if (temp != null ) {
28- item .aliases .add (temp );
29- if (item .aliases != null && item .aliases .get (0 ).contains ("\" " )) {
30- item .aliases .set (0 ,item .aliases .get (0 ).substring (1 ));
27+ item .aliases .add (temp );
28+ if (item .aliases != null && item .aliases .get (0 ).contains ("\" " )) {
29+ item .aliases .set (0 ,item .aliases .get (0 ).substring (1 ));
30+ item .aliases .add (scanner .next ().toLowerCase ());
31+ while (!(item .aliases .get (item .aliases .size () - 1 ).contains ("\" " ))) {
3132 item .aliases .add (scanner .next ().toLowerCase ());
32- while (!(item .aliases .get (item .aliases .size () - 1 ).contains ("\" " ))) {
33- item .aliases .add (scanner .next ().toLowerCase ());
34- }
35- item .aliases .set ((item .aliases .size () - 1 ),item .aliases .get (item .aliases .size () - 1 ).substring (0 , item .aliases .get (item .aliases .size () - 1 ).length ()-1 ));
3633 }
34+ item .aliases .set ((item .aliases .size () - 1 ),item .aliases .get (item .aliases .size () - 1 ).substring (0 , item .aliases .get (item .aliases .size () - 1 ).length ()-1 ));
3735 }
3836 temp = scanner .next ().toLowerCase ();
39- if (temp != null ) {
40- item .guidance = temp ;
41- if (item .guidance != null && item .guidance .contains ("\" " )) {
42- item .guidance = item .guidance .substring (1 );
43- item .guidance = item .guidance + scanner .next ();
44- while (!(item .guidance .contains ("\" " ))) {
45- item .guidance = item .guidance + scanner .next ();
46- }
47- item .guidance = item .guidance .substring (0 , (item .guidance .length ()-1 ));
37+ item .guidance = temp ;
38+ if (item .guidance .contains ("\" " )) {
39+ item .guidance = item .guidance .substring (1 );
40+ item .guidance = item .guidance + scanner .next ();
41+ while (!(item .guidance .contains ("\" " ))) {
42+ item .guidance += scanner .next ();
4843 }
44+ item .guidance = item .guidance .substring (0 , (item .guidance .length ()-1 ));
4945 }
46+ item .accuracy = 0 ;
5047 return item ;
5148 }
5249
53- public boolean matches (String label ) {
54- if (name .toLowerCase ().contains (label .toLowerCase ()) || aliases .contains (label .toLowerCase ())) {
55- return true ;
56- } else {
57- return false ;
50+ // Returns how accurate the match is
51+ public float matches (String label ) {
52+ String input = label .toLowerCase ();
53+ float accuracy = 0 ;
54+ char [] inputArray = input .toCharArray ();
55+ if (name .toLowerCase ().contains (input )) {
56+ int matchingLetters = 0 ;
57+ char [] compareArray = name .toLowerCase ().toCharArray ();
58+ int startPosition = name .toLowerCase ().indexOf (input );
59+ int compareLength = name .length ();
60+ int inputPosition = 0 ;
61+ int comparePosition = startPosition ;
62+ boolean stillMatches = true ;
63+ while (stillMatches && comparePosition < compareLength && inputPosition < input .length ()) {
64+ if (inputArray [inputPosition ] == compareArray [comparePosition ]) {
65+ matchingLetters ++;
66+ } else {
67+ stillMatches = false ;
68+ }
69+ comparePosition ++;
70+ inputPosition ++;
71+ }
72+ accuracy = (float )matchingLetters /(float )compareLength ;
73+ } else if (aliases .contains (input )) {
74+ for (int alias =0 ; alias < aliases .size (); alias ++) {
75+ int matchingLetters = 0 ;
76+ char [] compareArray = aliases .get (alias ).toCharArray ();
77+ int startPosition = aliases .get (alias ).indexOf (input );
78+ int compareLength = aliases .get (alias ).length ();
79+ int inputPosition = 0 ;
80+ int comparePosition = startPosition ;
81+ boolean stillMatches = true ;
82+ while (stillMatches && comparePosition < compareLength && inputPosition < input .length ()) {
83+ if (inputArray [inputPosition ] == compareArray [comparePosition ]) {
84+ matchingLetters ++;
85+ } else {
86+ stillMatches = false ;
87+ }
88+ inputPosition ++;
89+ comparePosition ++;
90+ }
91+ if (matchingLetters /aliases .get (alias ).length () > accuracy ) {
92+ accuracy = (float )matchingLetters /(float )compareLength ;
93+ }
94+ }
5895 }
96+ return accuracy ;
5997 }
6098
6199 public String returnName () {return name ;}
62100 public List <String > returnAliases () {return aliases ;}
63- public String returnInfo () {return guidance ;
64- }
101+ public String returnInfo () {return guidance ;}
102+ public void setAccuracy (float value ) {accuracy = value ;}
103+ public float returnAccurcay () {return accuracy ;}
104+
65105
66106}
0 commit comments