0

因此,我正在尝试制作的程序是:一个从用户输入的字母中生成三个字母单词格式的程序。同一个字母不能多次使用,除非用户多次使用,并且同一个词不能出现两次。

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[i]+array[j]+array[k]) 出于某种原因似乎被视为 INT。

4

2 回答 2

1

您需要从这些创建一个字符串并将其添加到数组中。

String word = array[i] + "" + array[j] + "" + array[k];
if (chars.contains(word)) {
    continue;
} 
else {
    chars.add(word);
}

我认为 chars 是List<String>

于 2013-05-29T10:15:30.133 回答
1

char数据类型基本上是一个小的int. 它们不是字符串。这就是为什么你得到整数算术结果而不是字符串连接的原因。

如果您想知道您的数组列表是否包含这三个字符,您需要调用 contains 方法三次。

if(chars.contains(array[i]) && chars.contains(array[j]) && chars.contains(array[k]))
于 2013-05-29T09:54:40.127 回答