我正在开发一个程序..在android中,在edittext中输入名称,并在其中搜索元音。假设Roshan元音存在,即o& a,必须显示第一个元音,我得到了显示第一个元音的代码,程序工作正常..但程序只在有元音时显示元音不止一个元音..如果只有一个元音没有显示...请检查代码,如果发现任何错误请帮助..
public char gReport(View V)
{
et1 = (EditText) findViewById (R.id.editText1);
et2 = (EditText) findViewById (R.id.editText2);
et3 = (EditText) findViewById (R.id.editText3);
TextView tv1 = (TextView) findViewById (R.id.textView1);
String str = et1.getText().toString();
int a=str.indexOf('a');
int b=str.indexOf('e');
int c=str.indexOf('i');
int d=str.indexOf('o');
int e=str.indexOf('u');
if(a!=-1 && a<(b&c&d&e))
{
tv1.setText("a");
}
else if(b!=-1 && b<(a&c&d&e))
{
tv1.setText("e");
}
else if(c!=-1 && c<(a&b&d&e))
{
tv1.setText("i");
}
else if(d!=-1 && d<(a&c&b&e))
{
tv1.setText("o");
}
else if(e!=-1 && e<(a&c&d&b))
{
tv1.setText("u");
}
return 0;
}
答案 0 :(得分:2)
找到第一次出现的元音
String str = et1.getText().toString();
outer : for (i = 0; i < str.length(); i++)
{
switch(s.charAt(i)) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
tv1.setText(s.charAt(i));
break outer;
}
或者像这样......
for (i = 0; i < str.length(); i++)
{
if(StringUtils.isVowel(str,i)){
tv1.setText(s.charAt(i));
break;
}
}
答案 1 :(得分:2)
你的逻辑存在缺陷。
if(a!=-1 && a<(b&c&d&e))
你说,如果a != -1
- 这意味着它找到了字符串中的元音。
&& a<(b&c&d&e)
- 你试图找出它是否是最低的索引。
如果b
,c
,d
和e
为-1
,该怎么办? a
永远不会比他们少。这就是为什么当只找到1个字符时它不起作用的原因。
NitroNbg打败了我的答案,我已在那里发表评论,这应该可以解决你的问题。
答案 2 :(得分:1)
你可以尝试这个::
在java中,您有一个方法用于在给定字符串中搜索特定字符串。
YourString.contains("CheckString");
为了检查First元音,只需从数组中找到最小数字,然后从主字符串中获取子字符串。
char[] a = {'3', '5', '1', '4', '2'};
List b = Arrays.asList(ArrayUtils.toObject(a));
System.out.println(Collections.min(b));
希望它能帮助!!
答案 3 :(得分:1)
在您的第二个if
条件中,我假设您要检查当前元音索引是否小于其他所有元音索引。你不能像你写的那样去做。你必须为每个案例明确写:
if((a!=-1) && (a<b) && (a<c) && (a<d) && (a<e))
但是,这不起作用,因为您的索引将大于错误索引(-1)。因此,您必须包含一个临时整数值来检查索引的最小值。试试这个:
int min = str.length();
if(a!=-1 && a<min) {
tv1.setText("a");
min=a;
}
if(b!=-1 && b<min) {
tv1.setText("e");
min=b;
}
if(c!=-1 && c<min) {
tv1.setText("i");
min=c;
}
if(d!=-1 && d<min) {
tv1.setText("o");
min=d;
}
if(e!=-1 && e<min) {
tv1.setText("u");
min=e;
}