A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

丁畅^0^

中级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© 丁畅^0^ 中级黑马   /  2012-3-5 18:33  /  2115 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

初学java,编着练习的,不知道为什么会有一个错误,就是This method must return a result of boolean,我已经有返回值了,谢谢解答。
public static boolean canbeLink(int[][] map,int row1, int col1, int row2, int col2)
        {
               
                int a=row1;
                int b=col1;
                int a0=row2;
                int b0=col2;
                int start = map[a][b];
                int end = map[a0][b0];
                int[][] map1=map;
        if (a==0&&b==0)
        {
                        if ((map[a][b+1]!=0&&map[a+1][b]!=0)&&(map[a][b+1]!=end&&map[a+1][b]!=end))
                {
                        return false;
                }
                if ((map[a][b+1]==end)||map[a+1][b]!=end)
                {
                        return true;
                }
                if (map[a][b+1]==0)
                {
                        map[a][b+1]=start;
                }
                if (map[a+1][b]==0)
                {
                        map[a+1][b]=start;
                }
                for (int i=0;i<map.length ; i++)
                {
                        for (int j=0;j<map[0].length ;j++ )
                        {
                if(map[i][j]==start)
                  
                                {
                                        if (map[i+1][j]==end||map[i][j+1]==end)
                                        {
                                                return true;
                                        }
                                        if (map[i+1][j]!=0||map[i][j+1]!=0)
                                        {
                        map[i][j]=-1;
                                        }
                                        if(map[i+1][j]==0||map[i][j+1]==0)
                                    {
                                        return  canbeLink(map1,i,j,a0,b0);
                    }
                }
                               

                        }
                }
        
        }

        if(a==0&&(b==map[0].length-1))
                {
                        if( (map[a+1][b]!=0&&map[a][b-1]!=0)&&(map[a+1][b]!=end&&map[a][b-1]!=end))
                {
                        return false;
                }
                if ((map[a+1][b]==end||map[a][b-1]==end))
                {
                        return true;
                }
                if (map[a][b-1]==0)
                {
                        map[a][b-1]=start;
                }
               
                if (map[a+1][b]==0)
                {
                        map[a+1][b]=start;
                }
                for (int i=0;i<map.length ; i++)
                {
                        for (int j=0;j<map[0].length ;j++ )
                        {
                if(map[i][j]==start)
                  
                                {
                                        if ((map[i][j-1]==end)||map[i+1][j]==end)
                                        {
                                                return true;
                                        }
                                        if ((map[i][j-1]!=0)||map[i+1][j]!=0)
                                        {
                        map[i][j]=-1;
                                        }
                                        if((map[i][j-1]==0)||map[i+1][j]==0)
                                    {
                                        return  canbeLink(map1,i,j,a0,b0);
                    }
                }
                               
                        }
                }
        
                }
        
                if ((a==map.length-1)&&b==0)
                {
                        if ((map[a][b+1]!=0&&map[a-1][b]!=0)&&(map[a][b+1]!=end&&map[a-1][b]!=end))
                {
                        return false;
                }
                if ((map[a][b+1]==end||map[a-1][b]==end))
                {
                        return true;
                }
               
                if (map[a-1][b]==0)
                {
                        map[a-1][b]=start;
                }
                if (map[a][b+1]==0)
                {
                        map[a][b+1]=start;
                }
               
                for (int i=0;i<map.length ; i++)
                {
                        for (int j=0;j<map[0].length ;j++ )
                        {
                if(map[i][j]==start)
                  
                                {
                                        if ((map[i-1][j]==end)||map[i][j+1]==end)
                                        {
                                                return true;
                                        }
                                        if ((map[i-1][j]!=0)||map[i][j+1]!=0)
                                        {
                        map[i][j]=-1;
                                        }
                                        if((map[i-1][j]==0)||map[i][j+1]==0)
                                    {
                                        return  canbeLink(map1,i,j,a0,b0);
                    }
                }
                               
                          

                        }
                }
        
                }

        if ((a==map.length-1)&&(b==map[0].length-1))
        {
                        if ((map[a-1][b]!=0&&map[a][b-1]!=0)&&(map[a-1][b]!=end&&map[a][b-1]!=end))
                {
                        return false;
                }
                if ((map[a-1][b]==end||map[a][b-1]==end))
                {
                        return true;
                }
                if (map[a][b-1]==0)
                {
                        map[a][b-1]=start;
                }
                if (map[a-1][b]==0)
                {
                        map[a-1][b]=start;
                }
               
                for (int i=0;i<map.length ; i++)
                {
                        for (int j=0;j<map[0].length ;j++ )
                        {
                if(map[i][j]==start)
                  
                                {
                                        if ((map[i-1][j]==end)||(map[i][j-1]==end))
                                        {
                                                return true;
                                        }
                                        if ((map[i-1][j]!=0)||(map[i][j-1]!=0))
                                        {
                        map[i][j]=-1;
                                        }
                                        if((map[i-1][j]==0)||(map[i][j-1]==0))
                                    {
                                        return  canbeLink(map1,i,j,a0,b0);
                    }
                }
                               
                          
                        }
                }
        
        }

                if (a==0&& 0<b<<(map[0].length-1))
                {
                        if ((map[a][b+1]!=0&&map[a+1][b]!=0&&map[a][b-1]!=0)&&(map[a][b+1]!=end&&map[a+1][b]!=end&&map[a][b-1]!=end))
                {
                        return false;
                }
                if ((map[a][b+1]==end||map[a+1][b]!=end||map[a][b-1]==end))
                {
                        return true;
                }
                if (map[a][b-1]==0)
                {
                        map[a][b-1]=start;
                }
               
                if (map[a][b+1]==0)
                {
                        map[a][b+1]=start;
                }
                if (map[a+1][b]==0)
                {
                        map[a+1][b]=start;
                }
                for (int i=0;i<map.length ; i++)
                {
                        for (int j=0;j<map[0].length ;j++ )
                        {
                if(map[i][j]==start)
                  
                                {
                                        if ((map[i][j-1]==end)||map[i+1][j]==end||map[i][j+1]==end)
                                        {
                                                return true;
                                        }
                                        if ((map[i][j-1]!=0)||map[i+1][j]!=0||map[i][j+1]!=0)
                                        {
                        map[i][j]=-1;
                                        }
                                        if((map[i][j-1]==0)||map[i+1][j]==0||map[i][j+1]==0)
                                    {
                                        return  canbeLink(map1,i,j,a0,b0);
                    }
                }
                               
                            else
                                {

                                }

                        }
                }
                }
        if ((0<a<<map.length-1)&&b==0)
        {
                        if ((map[a][b+1]!=0&&map[a+1][b]!=0&&map[a-1][b]!=0)&&(map[a][b+1]!=end&&map[a+1][b]!=end&&map[a-1][b]!=end))
                {
                        return false;
                }
                if ((map[a][b+1]==end||map[a+1][b]!=end||map[a-1][b]==end))
                {
                        return true;
                }
               
                if (map[a-1][b]==0)
                {
                        map[a-1][b]=start;
                }
                if (map[a][b+1]==0)
                {
                        map[a][b+1]=start;
                }
                if (map[a+1][b]==0)
                {
                        map[a+1][b]=start;
                }
                for (int i=0;i<map.length ; i++)
                {
                        for (int j=0;j<map[0].length ;j++ )
                        {
                if(map[i][j]==start)
                  
                                {
                                        if ((map[i-1][j]==end)||map[i+1][j]==end||map[i][j+1]==end)
                                        {
                                                return true;
                                        }
                                        if ((map[i-1][j]!=0)||map[i+1][j]!=0||map[i][j+1]!=0)
                                        {
                        map[i][j]=-1;
                                        }
                                        if((map[i-1][j]==0)||map[i+1][j]==0||map[i][j+1]==0)
                                    {
                                        return  canbeLink(map1,i,j,a0,b0);
                    }
                }
                               
                            else
                                {

                                }

                        }
                }
        }
                if ((a==map.length-1)&&(0<b<<map[0].length-1))
                {
                        if ((map[a][b+1]!=0&&map[a-1][b]!=0&&map[a][b-1]!=0)&&(map[a][b+1]!=end&&map[a+1][b]!=end&&map[a-1][b]!=end&&map[a][b-1]!=end))
                {
                        return false;
                }
                if ((map[a][b+1]==end||map[a-1][b]==end||map[a][b-1]==end))
                {
                        return true;
                }
                if (map[a][b-1]==0)
                {
                        map[a][b-1]=start;
                }
                if (map[a-1][b]==0)
                {
                        map[a-1][b]=start;
                }
                if (map[a][b+1]==0)
                {
                        map[a][b+1]=start;
                }
               
                for (int i=0;i<map.length ; i++)
                {
                        for (int j=0;j<map[0].length ;j++ )
                        {
                if(map[i][j]==start)
                  
                                {
                                        if ((map[i-1][j]==end)||(map[i][j-1]==end)||map[i][j+1]==end)
                                        {
                                                return true;
                                        }
                                        if ((map[i-1][j]!=0)||(map[i][j-1]!=0)||map[i][j+1]!=0)
                                        {
                        map[i][j]=-1;
                                        }
                                        if((map[i-1][j]==0)||(map[i][j-1]==0)||map[i][j+1]==0)
                                    {
                                        return  canbeLink(map1,i,j,a0,b0);
                    }
                }
                               
                            else
                                {

                                }

                        }
                }
                }
                if ((0<a<<map.length-1)&&(b==map[0].length-1))
                {
                        if( (map[a+1][b]!=0&&map[a-1][b]!=0&&map[a][b-1]!=0)&&(map[a][b+1]!=end&&map[a+1][b]!=end&&map[a-1][b]!=end&&map[a][b-1]!=end))
                {
                        return false;
                }
                if ((map[a+1][b]!=end||map[a-1][b]==end||map[a][b-1]==end))
                {
                        return true;
                }
                if (map[a][b-1]==0)
                {
                        map[a][b-1]=start;
                }
                if (map[a-1][b]==0)
                {
                        map[a-1][b]=start;
                }
               
                if (map[a+1][b]==0)
                {
                        map[a+1][b]=start;
                }
                for (int i=0;i<map.length ; i++)
                {
                        for (int j=0;j<map[0].length ;j++ )
                        {
                if(map[i][j]==start)
                  
                                {
                                        if ((map[i-1][j]==end)||(map[i][j-1]==end)||map[i+1][j]==end)
                                        {
                                                return true;
                                        }
                                        if ((map[i-1][j]!=0)||(map[i][j-1]!=0)||map[i+1][j]!=0)
                                        {
                        map[i][j]=-1;
                                        }
                                        if((map[i-1][j]==0)||(map[i][j-1]==0)||map[i+1][j]==0)
                                    {
                                        return  canbeLink(map1,i,j,a0,b0);
                    }
                }
                               
                            else
                                {

                                }

                        }
                }
                }

       if ((0<a<<map.length-1)&&(0<b<<map[0].length-1))
       {
                   if ((map[a][b+1]!=0&&map[a+1][b]!=0&&map[a-1][b]!=0&&map[a][b-1]!=0)&&(map[a][b+1]!=end&&map[a+1][b]!=end&&map[a-1][b]!=end&&map[a][b-1]!=end))
                {
                        return false;
                }
                if ((map[a][b+1]==end||map[a+1][b]!=end||map[a-1][b]==end||map[a][b-1]==end))
                {
                        return true;
                }
                if (map[a][b-1]==0)
                {
                        map[a][b-1]=start;
                }
                if (map[a-1][b]==0)
                {
                        map[a-1][b]=start;
                }
                if (map[a][b+1]==0)
                {
                        map[a][b+1]=start;
                }
                if (map[a+1][b]==0)
                {
                        map[a+1][b]=start;
                }
                for (int i=0;i<map.length ; i++)
                {
                        for (int j=0;j<map[0].length ;j++ )
                        {
                if(map[i][j]==start)
                  
                                {
                                        if ((map[i-1][j]==end)||(map[i][j-1]==end)||map[i+1][j]==end||map[i][j+1]==end)
                                        {
                                                return true;
                                        }
                                       
                                        if ((map[i-1][j]!=0)||(map[i][j-1]!=0)||map[i+1][j]!=0||map[i][j+1]!=0)
                                        {
                        map[i][j]=-1;
                                        }
                                        if((map[i-1][j]==0)||(map[i][j-1]==0)||map[i+1][j]==0||map[i][j+1]==0)
                                    {
                                        return  canbeLink(map1,i,j,a0,b0);
                    }
                }
                               
                            else
                                {

                                }

                        }
                }
        
       }

评分

参与人数 1技术分 +1 收起 理由
强文何 + 1

查看全部评分

3 个回复

倒序浏览
else后面也要加返回值,万一if条件不成立JVM虚拟机到哪去找返回值
回复 使用道具 举报
复制错了,所有的else{}都去掉,还是有这个错误
回复 使用道具 举报
This method must return a result of boolean,是说你有一个方法要返回值,而你没有return。
lz不用把整个程序都粘上来,把出错地方放上来就行了。

点评

是啊!我也看了半天  发表于 2012-3-6 09:44
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马