Android在字符串中搜索字符

时间:2013-11-26 07:47:48

标签: java android android-edittext

我正在开发一个程序..在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;



    }

4 个答案:

答案 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) - 你试图找出它是否是最低的索引。

如果bcde-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;
}