【发布时间】:2019-05-03 12:17:57
【问题描述】:
我已经实现了以下代码,以尝试根据我的变量 wordToGuess 的排列对 ArrayList 进行排序,而不使用 Comparator 类。这适用于没有重复字母的字符串,如“嘶哑”。
但是,当我将 wordToGuess 更改为“恒星”时,问题就出现了。我确实意识到问题源于 indexOutOfBoundExceptionError 但我已经考虑了一整天,似乎无法找到可能的解决方案。
我的主要问题是将整个单词“stellar”转移到我的orderedHint ArrayList 中,同时保留两个'l's。
非常感谢任何帮助!如果您对如何在不使用另一个 Comparator 类的情况下对 ArrayList 进行排序有更好的建议,我肯定会从中学习!期待您的回答! :D
import java.util.ArrayList;
import java.util.List;
public class ArrayListTest {
public static List<Character> hints = new ArrayList<Character>();
public static List<Character> orderedHint = new ArrayList<Character>();
public static String wordToGuess = "hoarse";
public static String word = "";
public static String fullWord = "";
public static void sortHintsArray() {
System.out.println("hints: " + hints);
System.out.println("orderedHint: " + orderedHint);
for(int i = 0;i<hints.size();i++)
{
int index = wordToGuess.indexOf(hints.get(i));
orderedHint.set(index,hints.get(i));
System.out.println();
System.out.printf("%d iteration: \n",i+1);
System.out.println("hints: " + hints);
System.out.println("orderedHint: " + orderedHint);
}
for(int i =0;i<wordToGuess.length();i++)
{
fullWord += orderedHint.get(i);
}
}
public static boolean checkCorrect() {
return fullWord == word;
}
public static void main(String[] args) {
hints.add('e');
hints.add('r');
hints.add('s');
hints.add('a');
hints.add('h');
hints.add('o');
orderedHint.add('e');
orderedHint.add('r');
orderedHint.add('s');
orderedHint.add('a');
orderedHint.add('h');
orderedHint.add('o');
sortHintsArray();
//System.out.println(hints);
System.out.println(fullWord);
}
}
输出:
hints: [e, r, s, a, h, o]
orderedHint: [e, r, s, a, h, o]
1 iteration:
hints: [e, r, s, a, h, o]
orderedHint: [e, r, s, a, h, e]
2 iteration:
hints: [e, r, s, a, h, o]
orderedHint: [e, r, s, r, h, e]
3 iteration:
hints: [e, r, s, a, h, o]
orderedHint: [e, r, s, r, s, e]
4 iteration:
hints: [e, r, s, a, h, o]
orderedHint: [e, r, a, r, s, e]
5 iteration:
hints: [e, r, s, a, h, o]
orderedHint: [h, r, a, r, s, e]
6 iteration:
hints: [e, r, s, a, h, o]
orderedHint: [h, o, a, r, s, e]
hoarse
【问题讨论】:
-
你为什么不使用
Comparator? -
因为我的作业不允许哈哈我需要把所有这些都放在一个班级里。
-
当我将 wordToGuess 更改为“stellar”时 ...您如何更改相应的
hints? -
我通过将 wordToGuess 设置为“stellar”并更改 main 方法中的 hints.add 对其进行硬编码。
标签: java arraylist duplicates