这是我的代码:
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条件。有什么建议吗?谢谢
答案 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");
}
}