public String CheckChargeRule(String code)
{
String checkCR = null;
BusinessDao bd = new BusinessDao();
String[] getCR = bd.getChargeRule();
for(int i = 0;i<getCR.length;i++)
{
if(getCR[i] == code)
{
checkCR = "checked";
break;
}
}
return checkCR;
}
checkCR返回的值只是null,请问能让他返回checked吗?有实现的方法吗?谢谢!

解决方案 »

  1.   

    好奇怪,这好像不是一个编程问题,而是一个设计问题。你需要搞清楚,getChargeRule()返回的是什么,以及你传给CheckChargeRule()方法的参数是什么。不了解你的设计,没法回答你的问题。
      

  2.   

    如果传入的string code和BusinessDao中的getcharrule()值相同就出现checkCR = "checked";了呀。
      

  3.   

    设计是这样的:首先用getChargeRule()从数据库中取得字符数组,把他传给String[] getCR,然后在循环中检索getCR中是否有给CheckChargeRule()的字符code,如果有令String checkCR ="checked"
      

  4.   

    BusinessDao的getChargeRule()方法可靠吗?有没有做过单元测试?你确定它正确返回了你想要的String[]?
    顺便说一下,String[]不是字符数组,字符数组是char[]
      

  5.   

    返回的字符串数组是没问题的,但有相同元素时String checkCR依然返回null
      

  6.   

    在JAVA中有全局变量这么一说吗 ?
      

  7.   

    为什么getCR[i]和code的值相等但不往下执行呢?
      

  8.   

    要么就是for里的if 没做。弄个单元测试,然后集成试试
      

  9.   

    这个测试通过,大概和你那个是一样的原理。
    package bao;public class Question1 {
    String a[]={"1","2","3"};
      void string(String s){
    for(int i=0;i<3;i++){
      if(a[i]==s) System.out.printf("ok!\n");  
      else        System.out.printf("error!!!\n");
     }
     }
       
    public static void main(String args[]) {
    Question1 c=new Question1();
    c.string("1"); }};
      

  10.   

    这个问题可以啃定的是你的 IF语句没有里的内容没有被运行到其中可能有两个方面的原因存在:
        
       一、是你的IF(getCR[i] == code)这个表达式里的值不存在相等的情况   二、如果你确定getCR[i]和code有相等的什值,而没有能执行IF括号中的语句
           那么你在IF表达式中用equals()方法来判断两个值是否相等
           因为在判断两个字符串是否相等时,如果用==来比较,比较的是引用对像的引用址是  否想同,而不是引用对像指向的值是否想同.
      

  11.   

    你把那getcr[]数组重新定义下:
    string[] getcr=new string[?]
    string一开始是要初始化的吧?
      

  12.   

    package bao;public class Test { class BusinessDao {
      public String getChargeRule(){
    String b[]={"1","2","3"};
    return b[0];
    }
    }
    public String CheckChargeRule(String code)
    {
    String checkCR = null;
    BusinessDao bd = new BusinessDao();
    String[] getCR =new String[1];
    getCR[1]=bd.getChargeRule();
    for(int i = 0;i<getCR.length;i++)
    {
    if(getCR[i] == code)
    {
    checkCR = "checked";
    break;
    }
    }
    return checkCR;
    }
    public static void main(String args[])
    {
    Test a=new Test();

    System.out.println("resault"+a.CheckChargeRule("1"));
    }
    }改了下。~呵呵,大概那意思。
      

  13.   

    I明白啦,应该用equals()比较,低级错误!
      

  14.   

    ls正解,是对象的比较,怎么能用==呢,应该用.equals();
      

  15.   

    ==是浅度对象比较,equals方法是深度对象比较,==比较的是两个对象是否是指向同一引用,EQUALS比较是两个对象的内容,所以你的问题要用EQUALS方法解决