我试图制作的节目是: 从用户输入的字母中生成三个字母单词的程序。同一个字母不能多次使用,除非用户多次使用它,并且同一个字不能出现两次。
public class JavaApplication1 {
private static boolean Vowel (char c){
return (c == 'a' || c == 'e' || c == 'o' || c == 'u' || c == 'i');
}
public static void main(String[] args) {
char[] array = {'b', 'c','a', 'd', 'e', 'b'};
//List<Character> chars = new ArrayList<Character>();
String words = "";
for(int i = 0; i < array.length; i++){
if(Vowel(array[i]) == true){
continue;
}
for(int j = 0; j < array.length; j++){
if(Vowel(array[j]) == false){
continue;
}
for(int k = 0; k < array.length; k++){
if(Vowel(array[k]) == true){
continue;
}
if(array[k] == array[i]){
continue;
}
else{//here it should check if the word already exists
if(chars.contains((array[i] + array[j] + array[k]))){
continue;
}
else{
chars.add(array[i]);
chars.add(array[j]);
chars.add(array[k]);
}
}
}
}
}
System.out.print(chars.toString());
}
}
我遇到麻烦的地方是......检查这个单词是否已经存在。我试过使用Array列表字符串,char数组。 (array [i] + array [j] + array [k])由于某种原因似乎被视为INT。
答案 0 :(得分:1)
char
数据类型基本上是一个小int
。它们不是字符串。这就是为什么你得到整数算术结果而不是字符串连接。
如果你想知道你的数组列表是否包含这三个字符,你需要三次调用contains方法。
if(chars.contains(array[i]) && chars.contains(array[j]) && chars.contains(array[k]))
答案 1 :(得分:1)
您需要从这些字符串创建一个字符串并将其添加到数组中。
String word = array[i] + "" + array[j] + "" + array[k];
if (chars.contains(word)) {
continue;
}
else {
chars.add(word);
}
我认为字符是List<String>