1

我创建了一个接收和读取 SMS 消息的 android 应用程序。
目前,应用程序读取 SMS 并将其转换为 8 个字符的数组,因为它只会接收 8 个字符的消息。例如,消息可能是“AbCdEfGh”,它将被转换为 [A][b][C][d][E][f][G][h]。

if (array[0] == 'a'){
                this.abortBroadcast();
                Toast.makeText(context, "a", Toast.LENGTH_LONG).show();
                context.sendBroadcast(in);
            }
            else if (array[0] == 'A'){
                //this.abortBroadcast();
                //Toast.makeText(context, "A", Toast.LENGTH_LONG).show();
                //context.sendBroadcast(in);
            }
            else if (array[1] == 'b'){
                this.abortBroadcast();
                Toast.makeText(context, "b", Toast.LENGTH_LONG).show();
                context.sendBroadcast(in);
            }
            else if (array[1] == 'B'){
                this.abortBroadcast();
                Toast.makeText(context, "B", Toast.LENGTH_LONG).show();
                context.sendBroadcast(in);
            }

我希望应用程序做的是读取这些字符中的每一个,并根据字符是大写还是小写来做一些事情。例如,如果 [0] 等于 'a' 则执行某项操作,否则如果 [0] 等于 [A] 则执行某项操作,然后继续检查下一个元素。

我希望它遍历数组的每个元素并为消息中的每个字符做一些事情,目前该应用程序将完美地显示“a”代表“a”和“A”代表“A”,问题是如果你输入“ab”它仍然只会显示“a”而不是“ab”。如果您将第一个字母输入为空白,它将仅显示第二个字母,例如“b”将返回“b”。

我应该如何安排我的代码,以便它选择并显示数组的组合?当然,我不必只对可能涉及的 8 个字符的每个可能组合进行编码?switch 语句可以成为解决方案吗?是否有可能实现某种循环,这样一旦它查看了第一个数组元素,它就会循环并查看下一个元素?抱歉,如果我没有很清楚地解释这一点!希望比我有更多经验的人能够解决这个问题。谢谢你的帮助

4

4 回答 4

1

为什么不循环遍历你的数组,将每个数组元素的值附加到一个字符串,然后在末尾显示该字符串?像这样的东西:

        StringBuilder sb = new StringBuilder();

        for(int i = 0; i < array.length; i++)
        {
            if (array[i] == 'a'){
                this.abortBroadcast();
                //Toast.makeText(context, "a", Toast.LENGTH_LONG).show();
                sb.append("a");
                context.sendBroadcast(in);
                if(array[i+1] == 'b')
                {
                    //do whatever you want down here after finding a combination...
                }
            }
            else if (array[i] == 'A'){
                //this.abortBroadcast();
                //Toast.makeText(context, "A", Toast.LENGTH_LONG).show();
                //sb.append("b");
                //context.sendBroadcast(in);
            }
            //...
            //and so on...
        }
        Toast.makeText(context, sb.toString(), Toast.LENGTH_LONG).show();
于 2013-08-08T11:11:58.537 回答
1

只需在 if else 语句的末尾加上一个分号,然后代码将继续执行下一个 if 语句而不是停止。

if (array[0] == 'a'){
        this.abortBroadcast();
        Toast.makeText(context, "a", Toast.LENGTH_LONG).show();
        context.sendBroadcast(in);
    }
    else if (array[0] == 'A'){
        //this.abortBroadcast();
        //Toast.makeText(context, "A", Toast.LENGTH_LONG).show();
        //context.sendBroadcast(in);
 //insert semi colon after } below:   
 }; 
于 2013-08-09T09:58:11.563 回答
0

您在代码中使用 if-else 语句。当array[0] 等于a 时,它不会检查条件array[1] == 'B'。

       if (array[0] == 'a'){
            this.abortBroadcast();
            Toast.makeText(context, "a", Toast.LENGTH_LONG).show();
            context.sendBroadcast(in);
        }
        else if (array[0] == 'A'){
            //this.abortBroadcast();
            //Toast.makeText(context, "A", Toast.LENGTH_LONG).show();
            //context.sendBroadcast(in);
        }
        if (array[1] == 'b'){
            this.abortBroadcast();
            Toast.makeText(context, "b", Toast.LENGTH_LONG).show();
            context.sendBroadcast(in);
        }
        else if (array[1] == 'B'){
            this.abortBroadcast();
            Toast.makeText(context, "B", Toast.LENGTH_LONG).show();
            context.sendBroadcast(in);
        }
于 2013-08-08T09:48:57.503 回答
0

可能会有所帮助,

Declare arr as String in your function and call this method as 
getArr(arr.charAt(0),arr);



getArr(char choice,arr)
{
   static int i=-1;
   i++;
   if(i>=arr.length())
     return;
   switch(choice)
   {
 case a:
    getArr(arr.charAt(i),arr);
    //do something
        this.abortBroadcast(); 
        Toast.makeText(context, arr.substring(0,i+1),Toast.LENGTH_LONG).show();     
        context.sendBroadcast(in);
        //do above for all do something 
    break;
 case b:
    getArr(arr.charAt(i),arr);
    //do something
    break;
 case c:
    getArr(arr.charAt(i),arr);
    //do something
    break;
 case d:
    getArr(arr.charAt(i),arr);
    //do something
    break;
 case e:
    getArr(arr.charAt(i),arr);
    //do something
    break;
 case f:
    getArr(arr.charAt(i),arr);
    //do something
    break;
 case g:
    getArr(arr.charAt(i),arr);
    //do something
    break;
 case h:
    getArr(arr.charAt(i),arr);
    //do something
    break;
 case A:
    getArr(arr.charAt(i),arr);
    //do something
    break;
 case B:
    getArr(arr.charAt(i),arr);
    //do something
    break;
 case C:
    getArr(arr.charAt(i),arr);
    //do something
    break;
 case D:
    getArr(arr.charAt(i),arr);
    //do something
    break;
 case E:
    getArr(arr.charAt(i),arr);
    //do something
    break;
 case F:
    getArr(arr.charAt(i),arr);
    //do something
    break;
 case G:
    getArr(arr.charAt(i),arr);
    //do something
    break;
 case H:
    getArr(arr.charAt(i),arr);
    //do something
    break;

} }

于 2013-08-08T10:44:33.880 回答