2015-10-14 2 views
4

Я пытаюсь написать программу, которая просит кого-нибудь ввести слово, а затем программа удаляет любые гласные в слове и печатает оставшийся согласный. Это то, что у меня есть до сих пор:Как вы удаляете гласные из слова и печатаете его?

package r7; 

import java.util.Scanner; 

public class Disemvowel { 
    public static void main(String[] args) { 
     Scanner stdin = new Scanner(System.in); 
     System.out.println("Please enter a word"); 
     String word = stdin.next(); 
     String disemvowlmentWord = ""; 
     int len = word.length(); 

     for (int i=0; i<len; i++) { 
      char c = word.charAt(i); 
      if (c != 'a' | c != 'e' | c != 'i' | c != 'o' | c != 'u') 
       disemvowlmentWord = disemvowlmentWord + c; 
     } 
     System.out.println(disemvowlmentWord); 
    } 
} 

Когда я запускаю его, он просто перепечатывает любое слово, которое я вводил.

ответ

7

Вы использовали поразрядный или (но каждый гласный не какой-либо другой гласный), я думаю, вы хотели логического и. Это

if (c != 'a' | c != 'e' | c != 'i' | c != 'o' | c != 'u') 

должно быть что-то вроде

if (c != 'a' && c != 'e' && c != 'i' && c != 'o' && c != 'u') 

Вы также можете использовать for-each loop, и я предпочел бы StringBuilder над созданием несколько непреложный String (ы). Нечто подобное,

StringBuilder sb = new StringBuilder(); 
for (char c : word.toCharArray()) { 
    if (c != 'a' && c != 'e' && c != 'i' && c != 'o' && c != 'u') { 
     sb.append(c); 
    } 
} 
System.out.println(sb); 

Наконец, выше тест (ы) также может быть выражено (из De Morgan's laws) как

if (!(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u')) 

или вы могли бы использовать регулярное выражение для замены гласных звуков с пустой String. Something like,

System.out.println(word.replaceAll("[a|e|i|o|u]", "")); 
+0

Спасибо вам большое! – Scheids

-3

Вы используете неправильного оператора. Использовать & & вместо |

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