全局变量问题

ericz007 2007-09-13 05:15:39
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吗?有实现的方法吗?谢谢!
...全文
367 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
cchaha 2007-09-14
  • 打赏
  • 举报
回复
==是浅度对象比较,equals方法是深度对象比较,==比较的是两个对象是否是指向同一引用,EQUALS比较是两个对象的内容,所以你的问题要用EQUALS方法解决
zhao_tk 2007-09-14
  • 打赏
  • 举报
回复
ls正解,是对象的比较,怎么能用==呢,应该用.equals();
Dan1980 2007-09-14
  • 打赏
  • 举报
回复
I明白啦,应该用equals()比较,低级错误!
ericz007 2007-09-13
  • 打赏
  • 举报
回复
单测是可以的,但是连接到数据库取出然后存到数组中去比较就不行了,晕
szwx855 2007-09-13
  • 打赏
  • 举报
回复
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"));
}
}

改了下。~呵呵,大概那意思。
szwx855 2007-09-13
  • 打赏
  • 举报
回复
你把那getcr[]数组重新定义下:
string[] getcr=new string[?]
string一开始是要初始化的吧?
richie521 2007-09-13
  • 打赏
  • 举报
回复
这个问题可以啃定的是你的 IF语句没有里的内容没有被运行到

其中可能有两个方面的原因存在:

一、是你的IF(getCR[i] == code)这个表达式里的值不存在相等的情况

二、如果你确定getCR[i]和code有相等的什值,而没有能执行IF括号中的语句
那么你在IF表达式中用equals()方法来判断两个值是否相等
因为在判断两个字符串是否相等时,如果用==来比较,比较的是引用对像的引用址是 否想同,而不是引用对像指向的值是否想同.
szwx855 2007-09-13
  • 打赏
  • 举报
回复
这个测试通过,大概和你那个是一样的原理。
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");

}

};
车前猛跑 2007-09-13
  • 打赏
  • 举报
回复
enen
ericz007 2007-09-13
  • 打赏
  • 举报
回复
if判断了但就是进不了大括号里面,晕
szwx855 2007-09-13
  • 打赏
  • 举报
回复
要么就是for里的if 没做。弄个单元测试,然后集成试试
ericz007 2007-09-13
  • 打赏
  • 举报
回复
为什么getCR[i]和code的值相等但不往下执行呢?
liuwanlin 2007-09-13
  • 打赏
  • 举报
回复
在JAVA中有全局变量这么一说吗 ?
ericz007 2007-09-13
  • 打赏
  • 举报
回复
返回的字符串数组是没问题的,但有相同元素时String checkCR依然返回null
Dan1980 2007-09-13
  • 打赏
  • 举报
回复
BusinessDao的getChargeRule()方法可靠吗?有没有做过单元测试?你确定它正确返回了你想要的String[]?
顺便说一下,String[]不是字符数组,字符数组是char[]
ericz007 2007-09-13
  • 打赏
  • 举报
回复
设计是这样的:首先用getChargeRule()从数据库中取得字符数组,把他传给String[] getCR,然后在循环中检索getCR中是否有给CheckChargeRule()的字符code,如果有令String checkCR ="checked"
szwx855 2007-09-13
  • 打赏
  • 举报
回复
好象是在查找相同的字符串,我说的对不对呀?
szwx855 2007-09-13
  • 打赏
  • 举报
回复
如果传入的string code和BusinessDao中的getcharrule()值相同就出现checkCR = "checked";了呀。
Dan1980 2007-09-13
  • 打赏
  • 举报
回复
好奇怪,这好像不是一个编程问题,而是一个设计问题。

你需要搞清楚,getChargeRule()返回的是什么,以及你传给CheckChargeRule()方法的参数是什么。不了解你的设计,没法回答你的问题。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧