У меня проблемы с получением s1
и s2
для правильного сравнения. Если я добавлю несколько строк в мой ArrayList<String>
, он, кажется, остановится после однократного запуска. Поэтому мне не хватает рекурсивного метода, чтобы помочь моему методу findMinimum
.
Мне нужно предоставить код для создания класса Tester
, но сейчас я просто пытаюсь создать работающую программу. Любая помощь приветствуется. Мне нужно использовать рекурсию для этого назначения, иначе я бы использовал другой маршрут.
public class BigComp {
// public static String s1;
// public static String s2;
public static void main(String[] args) {
// String s1 = "badd"; //, "job", "any";
// String s2 = "hat";//,"zFat","got";
ArrayList<String> stringArray = new ArrayList<String>();
stringArray.add("acc");
stringArray.add("Dbc");
stringArray.add("bac");
// compareTo(s1,s2);
// findMinimum(stringArray);
System.out.println(findMinimum(stringArray));
}
public static int compareTo(String s1, String s2) {
if(s1.charAt(0) < s2.charAt(0)) {
return -1; // String s1 is alphabetically before s2
}
if(s1.charAt(0) > s2.charAt(0)) {
return 1; // String s1 is alphabetically after s2
}
if(s1.charAt(0) == s2.charAt(0)) {
if(s1.length()== 1 && s2.length() ==1) {
return 0; // both strings being compared are identical
}
if(s1.length() == 1 && s2.length() > 1) {
return -1; // s1 is before s2
}
if(s1.length() > 1 && s2.length()== 1) {
return 1; // s2 is before s1
}
}
return compareTo(s1.substring(1), s2.substring(1));
} // end of compareTo method
public static String findMinimum(ArrayList<String> stringArray) {
String s1 = stringArray.get(0);
int max = stringArray.size()-1;
String s2 = stringArray.get(max);
int temp = compareTo(s1, s2);
// if(stringArray.size() == 1) {
// return stringArray.get(0);
// }
if(temp == 0) {
stringArray.remove(max);
return findMinimum(stringArray);
}
else if(temp == 1) {
stringArray.remove(s1);
return findMinimum(stringArray);
}
else {
stringArray.remove(s2);
return findMinimum(stringArray);
}
} // end findMinimum method
} // end of BigComp class