2010-09-16 68 views
0

在我的程序,这是一个开关的情况下,但它不执行ü可以给我解决Android的数据类型铸造

    Resources r2 = getResources(); 
       String[] strtemp409A=r2.getStringArray(R.array.strtemp409A); 
       String[] strtemp11=r2.getStringArray(R.array.strtemp11); 
       String[] strtemp113=r2.getStringArray(R.array.strtemp113); 
       String[] strtemp114=r2.getStringArray(R.array.strtemp114); 
       String[] strtemp12=r2.getStringArray(R.array.strtemp12); 
       String[] strtemp123=r2.getStringArray(R.array.strtemp123); 
       String[] strtemp124=r2.getStringArray(R.array.strtemp124); 
       String[] strtemp13=r2.getStringArray(R.array.strtemp13); 
       String[] strtemp134A=r2.getStringArray(R.array.strtemp134A); 
       String[] strtemp22=r2.getStringArray(R.array.strtemp22); 
       String[] strtemp23=r2.getStringArray(R.array.strtemp23); 
       String[]strtemp401A=r2.getStringArray(R.array.strtemp401A); 
       String[] strtemp401B=r2.getStringArray(R.array.strtemp401B); 
       String[] strtemp402A=r2.getStringArray(R.array.strtemp402A); 
       String[] strtemp402B=r2.getStringArray(R.array.strtemp402B); 
       String[] strtemp403B=r2.getStringArray(R.array.strtemp403B); 
       String[] strtemp404A=r2.getStringArray(R.array.strtemp404A); 
       String[] strtemp407C=r2.getStringArray(R.array.strtemp407C); 
       String[] strtemp408A=r2.getStringArray(R.array.strtemp408A); 

       String[] strtemp410A=r2.getStringArray(R.array.strtemp410A); 
       String[] strtemp414B=r2.getStringArray(R.array.strtemp414B); 
       String[] strtemp416A=r2.getStringArray(R.array.strtemp416A); 
       String[] strtemp417A=r2.getStringArray(R.array.strtemp417A); 
       String[] strtemp500=r2.getStringArray(R.array.strtemp500); 
       String[] strtemp502=r2.getStringArray(R.array.strtemp502); 
       String[] strtemp503=r2.getStringArray(R.array.strtemp503); 
       String[] strtemp507=r2.getStringArray(R.array.strtemp507); 
       String[] strtemp508B=r2.getStringArray(R.array.strtemp508B); 
       String[] strtempc409A=r2.getStringArray(R.array.strtempc409A); 
       String[] strtempc410A=r2.getStringArray(R.array.strtempc410A); 
       String[] strtempc414B=r2.getStringArray(R.array.strtempc414B); 


    public void setRefno(int refno) 
    { 

     this.refno=refno; 
    } 
    public int getRefno() 
    { 
     return refno; 
    } 
    public void setStr(String str) 
    { 
     this.str=str; 


    } 
    public String getStr() 
    { 

     return str; 
    } 
    public double getPrs() 
    { 
     switch(refno) 
     { 
      case 0: 

       for (int i = 0; i < strtemp409A.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp409A[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 1: 
       for (int i = 0; i < strtemp414B.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp414B[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 2: 
       for (int i = 0; i < strtemp416A.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp416A[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 3: 
       for (int i = 0; i < strtemp404A.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp404A[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 4: 
       for (int i = 0; i < strtemp507.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp507[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 5: 
       for (int i = 0; i < strtemp502.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp502[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 6: 
       for (int i = 0; i < strtemp402A.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp402A[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 7: 
       for (int i = 0; i < strtemp402B.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp402B[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 8: 
       for (int i = 0; i < strtemp408A.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp408A[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 9: 
       for (int i = 0; i < strtemp11.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp11[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 10: 
       for (int i = 0; i < strtemp113.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp113[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 11: 
       for (int i = 0; i < strtemp114.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp114[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 12: 
       for (int i = 0; i <strtemp123.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp123[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 13: 
       for (int i = 0; i < strtemp124.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp124[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 14: 
       for (int i = 0; i < strtemp500.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp500[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 15: 
       for (int i = 0; i < strtemp13.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp13[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 16: 
       for (int i = 0; i < strtemp23.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp23[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 17: 
       for (int i = 0; i <strtemp503.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp503[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 18: 
       for (int i = 0; i < strtemp508B.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp508B[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 19: 
       for (int i = 0; i < strtemp403B.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp403B[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 20: 
       for (int i = 0; i <strtemp22.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp22[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 21: 
       for (int i = 0; i < strtemp407C.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp407C[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 22: 
       for (int i = 0; i < strtemp417A.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp417A[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 23: 
       for (int i = 0; i < strtemp410A.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp410A[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 24: 
       for (int i = 0; i < strtemp12.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp12[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 25: 
       for (int i = 0; i < strtemp134A.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp134A[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 26: 
       for (int i = 0; i <strtemp401A.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp401A[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
      case 27: 
       for (int i = 0; i < strtemp401B.length; i++) 
       { 
        if (str.equalsIgnoreCase(strtemp401B[i])) 
        { 
         prs = i; 
        } 
       } 
       break; 
     } 

     return prs; 





    } 
+3

护目镜,他们什么也不做!拜托,请你帮个忙,并继续重构http://www.xradiograph.com/Programming/Refactoring – 2010-09-16 11:30:42

+0

你应该把那个东西了回来,并拍摄读了它。 – benvd 2010-09-16 12:54:28

+1

我发表我的评论太早,要礼貌;为什么我用侧面的参考回答你的问题?因为有太多的代码要理解;重构它 - 缩小它 - 这需要了解它是如何工作的,如果THAT不能帮助你找到问题,那么它仍然会使它更容易找到根本问题。 – 2010-09-16 13:32:59

回答

1
  1. 对于什么值refno是不是执行? (我看你的交换机里没有default的情况)

  2. Don't Repeat Yourself...所有重复的代码!如果您创建一个“find_and_print”函数,您将获得大量时间,该函数是一个使用适当参数调用该函数的调度表。

这是一些伪代码。

void find_in_array_and_print(String[] strings, String value) { 
    for (int i = 0; i < strings.length; i++) { 
    if (strings[i]==value) { 
     prs = i; 
     System.out.println("prs"+prs); 
     System.out.println("i"+i); 
    } 
    }  
} 

String[] to_look_in(int refno) { 
    switch(refno) { 
    case 0: return R.array.strtemp409A; 
    case 1: return R.array.strtemp414B; 
    //... 
    } 
} 

find_and_print(GetResources().getStringArray(to_look_in(refno)), str); 
+0

所有值 – bindal 2010-09-16 11:21:34

2

你还没有告诉我们什么refno是。这真的是一个开关案件吗?您可以在您的代码和调试它(在Eclipse F11)断点能够逐步执行代码,看看到底需要哪些执行路径。

+0

引用号是一个整数 – bindal 2010-09-16 11:14:10

+0

我得到了来自背景下,是的。你真的需要更具体的,但无论如何,效法我应该得到你需要,为什么没有被执行 – 2010-09-16 11:15:27

0

对于一段代码,你不要在交换机获得的唯一途径是,如果有异常的第一行和switch之间抛出。 如果你确信你甚至输入一段代码。

异常的可能原因是什么?内存不足时,空指针解引用是首先想到的有限陈述集。

+0

*你的代码的所有信息,“在我的程序,这是一个开关的情况下” * < - 除非*全部*真的是一个开关箱,没有被击中。 – 2010-09-16 12:44:50

0

我不知道你是如何设置refno的,但自动生成的R.java不会从0开始。 如果你想要陷阱它添加一个默认:case到你的交换机。 最后,“==”不是比较Java中的字符串的方式。它不会总是有效。 尝试以此为例,看看会发生什么!

String s1 = new String("123"); 

    String s2 = new String("123"); 
    if (s1 == s2) 
     System.out.println("s1 == s2 SHOWS TRUE"); 
    else 
     System.out.println("s1 == s2 SHOWS FALSE"); 
    if (s1.equals(s2)) 
     System.out.println("s1.equals(s2) SHOWS TRUE"); 
    else 
     System.out.println("s1.equals(s2) SHOWS FALSE"); 

那么谷歌为什么它不工作,为什么你应该使用.equals()