private int OtherScoreVal(string a , string q)
        {
            string A = AnswerToDisplay(a);
            string Q = AnswerToDisplay(q);
            char[] ma = A.ToCharArray();
            char[] mq = Q.ToCharArray();
            int count = 0;
            char[] recount = { };            if (a == "")
            {
                return 0;
            }            if (ma.Length > mq.Length)
            {
                return 0;
            }            for (int i = 0; i < ma.Length; i++)
            {
                for (int j = 0; j < mq.Length; j++)
                {
                    if (ma[i] == mq[j])
                    {
                        A = A.Remove(A.IndexOf(mq[j]), 1);                                               
                        break;
                    }
                }
            }            for (int i = 0; i < mq.Length; i++)
            {
                for (int j = 0; j < ma.Length; j++)
                {
                    if (mq[i] == ma[j])
                    {
                        Q = Q.Remove(Q.IndexOf(ma[j]), 1);                        
                        break;
                    }
                }
                if (A.Length == 0 && Q.Length == 0)
                    return 1;                if ((A.Length != 0 && Q.Length != 0) || (A.Length == 0 && Q.Length != 0))
                    return 0;                if (A.Length != 0 && Q.Length == 0)
                {
                    int length = 0;
                    length = ma.Length - A.Length;
                    return length;                    if (length == mq.Length)
                    {
                        return length;
                    }
                    
                }
                return 0;
            }
        }
    }报错显示并非所有的代码路径都返回值。。但是我设置了的啊

解决方案 »

  1.   

    private int OtherScoreVal(string a , string q)
            {
                string A = AnswerToDisplay(a);
                string Q = AnswerToDisplay(q);
                char[] ma = A.ToCharArray();
                char[] mq = Q.ToCharArray();
                int count = 0;
                char[] recount = { };            if (a == "")
                {
                    return 0;
                }            if (ma.Length > mq.Length)
                {
                    return 0;
                }            for (int i = 0; i < ma.Length; i++)
                {
                    for (int j = 0; j < mq.Length; j++)
                    {
                        if (ma[i] == mq[j])
                        {
                            A = A.Remove(A.IndexOf(mq[j]), 1);                                               
                            break;
                        }
                    }
                }            for (int i = 0; i < mq.Length; i++)
                {
                    for (int j = 0; j < ma.Length; j++)
                    {
                        if (mq[i] == ma[j])
                        {
                            Q = Q.Remove(Q.IndexOf(ma[j]), 1);                        
                            break;
                        }
                    }
                    if (A.Length == 0 && Q.Length == 0)
                        return 1;                if ((A.Length != 0 && Q.Length != 0) || (A.Length == 0 && Q.Length != 0))
                        return 0;                if (A.Length != 0 && Q.Length == 0)
                    {
                        int length = 0;
                        length = ma.Length - A.Length;
                        return length;                    if (length == mq.Length)
                        {
                            return length;
                        }
                    }
                }
                return 0;  //最外层没有返回值
            }
      

  2.   

    这样写的,看起来很费解让人
    最后一个循环for (int i = 0; i < mq.Length; i++)会执行吗?无论怎么样都return 0了, 还要i++干吗?
    最后一个if,写在retur之后,就不能运行了。
    系统提示的很清楚,就是你的代码有可能一种情况会没有返回值。比如说前两个if不满足,第一个循环被break了,最后一个大循环mq.Length<=0了,就没有返回值了。你不是设置了一个INT的count变量吗,不要每一步都return,把每一步的return改成为count赋值,最后return count不就可以了吗