2013-05-29 117 views
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。

+0

爲了使它有點更清楚......如果用戶輸入'{ 'B', 'C', 'A', 'd', 'E' , 'b'}' 他會得到 'BAC 壞 BEC 牀 駕駛室 CAD 駕駛室 CEB 土木工程署 CEB DAB DAC DAB DEB 月 DEB BAC 壞 BEC bed' 的話駕駛室DEB等不宜在兩次 – ZeW

回答

1

char數據類型基本上是小型的int。他們不是字符串。這就是爲什麼你要得到整數算術結果而不是字符串連接。

如果你想知道你的數組列表是否包含這三個字符,你需要調用contains方法三次。

if(chars.contains(array[i]) && chars.contains(array[j]) && chars.contains(array[k])) 
1

您需要從這些字符串中創建一個字符串並將其添加到數組中。

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

我假設字符是一個List<String>

+0

似乎沒有進入,如果也許有事情做的事實,當我打印數組列表看起來像這樣''[b,a,c,b,a,d,b,e]' – ZeW

+0

'//在這裏//它應該檢查代碼中的單詞是否已經存在',移走整個塊,然後試試我上面的建議。 – nitegazer2003

+0

我做了什麼似乎工作'串字; word = array [i] +「」+ array [j] +「」+ array [k];如果(words.contains(word)){ 繼續; } else { words + = word +「\ t」; }' 基本上你建議,但我切換到一個字符串,而不是一個字符數組列表。有一個問題讓我感到困惑,但是......在循環內部有一個String聲明並不壞?沒有使用太多的內存? – ZeW