标志控制的while循环

时间:2016-02-04 06:16:48

标签: java loops while-loop

这是我的代码:

import javax.swing.*;
public class flag_controlled_loop {
    public static void main (String[] args){
        char letter;
        String vowels="aeiouAEIOU", enter;
        boolean guess=false;



        while(!guess){
            enter=JOptionPane.showInputDialog("Enter letter: ");
            //letter=enter.charAt(0);

            if(enter.contains(vowels)){
                JOptionPane.showMessageDialog(null, "Found a vowel");
                guess=true;
            }
            else{
                JOptionPane.showMessageDialog(null, "Not that as I am expecting. Try again");
            }
        }
    }
}

问题是如果输入的字母是元音,程序应该终止。我只是编程的初学者,我尝试了这个解决方案,但它仍然无法正常工作。它将跳过if条件。有什么建议吗?谢谢

3 个答案:

答案 0 :(得分:0)

contains更改为正则表达式,因为它正在查找文字字符串aeiouAEIOU

正则表达式如下:

enter.contains("[aeiouAEIOU]+");

如果'enter'包含元音,则返回true,如果不包含元音,则返回false

希望这有帮助!

答案 1 :(得分:0)

除了正则表达式之外,另一种解决方案是将元音保持在HashSet,然后使用contains HashSet方法。有点像这样:

Set<String> vowels = new HashSet<String>(){{
   add("a");
   add("e");.....
}}

然后

if(vowels.contains(enter)){..

在这种情况下,查找时间为O(1)。

答案 2 :(得分:0)

尝试使用以下内容: 创建一个布尔变量:

      boolean getIT=false;
      while(!guess){
        enter=JOptionPane.showInputDialog("Enter letter: ");

使用for循环迭代元音字符串:

           for(int i = 0; i<vowels.length(); i++){
              letter = vowels.charAt(i);
             // when you get the right vowel set getIT = true; and exit from loop
              if(letter== enter.charAt(0)){
                  getIT = true;
                 break;
              }
               }
              if(getIT){
                  JOptionPane.showMessageDialog(null, "Found a vowel");
                  guess=true;
              }
              else{
                  JOptionPane.showMessageDialog(null, "Not that as I am expecting. Try again");
              }


    }