日期:2014-05-20  浏览次数:20692 次

遇到了关于这个循环返回值的困惑,高手帮忙看看啊
Java code

            public boolean check(int a){
                System.out.println(routeNum+"+"+a+"+"+nextNum);
                for(int i=0;i<routeNum.length();i++){
                    if(Integer.toString(a).equals(routeNum.charAt(i)))
                        return false;
                }
                return true;
            }



这个函数为什么只返回true,如果我改成只执行循环的话就像这样:

Java code

            public boolean check(int a){
                System.out.println(routeNum+"+"+a+"+"+nextNum);
                for(int i=0;i<routeNum.length();i++)
                    if(Integer.toString(a).equals(routeNum.charAt(i)))
                        return false;
            }



就会提示缺少返回语句。

java里不能这样在循环里返回值吗?如果想实现这个该怎么办呢?求高手指点~

------解决方案--------------------
第一段程序的if条件应该不会成立,因为charAt()返回的类型是char,你用String跟Character比是否equals,必然永远不能成立。

改为:
if(Integer.toString(a).equals(Character.toString(routeNum.charAt(i))))


另外,第二段程序肯定是错的,如果for循环正常结束,那么就没有return来指定返回值,逻辑上就是错的。