2013-05-29 8 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, char array. (array [i] + array [j] + array [k]) по какой-то причине, по-видимому, воспринимается как INT.

+0

Чтобы сделать это немного понятнее ... если пользовательский ввод '{ 'B', 'C', 'а', 'd', 'е' , 'Ъ'} ' Он получит ' Ьас плохо клюв кровать кабина хам кабина CEB CED CEB мазок DAC мазок Деб Декабре Деб Ьас плохо клюв bed' слова кабины Деб и т.д., не должно быть в два раза – 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

что я сделал и, кажется, работает 'String word; word = array [i] + "" + array [j] + "" + array [k]; если (слова.поддерживает (слово)) { continue; } else { слов + = слово + "\ t"; } ' В основном, что предложил, но я переключился на строку вместо списка массива символов. Один вопрос, который меня беспокоит, хотя ... не так ли плохо, что в цикле есть объявление String? не использует ли слишком много памяти? – ZeW

Смежные вопросы