为什么我收到此错误:并非所有代码路径都返回值?

jar*_*rus 0 .net c# visual-studio-2005 console-application

嗨,我刚接触c#,并试图编码,但得到错误可以任何人帮我这个我做错了什么?

using System;
using System.Collections.Generic;
using System.Text;

namespace hodder
{
    class Program
    {
        public static void Main()
        {
            isHodder(3);
        }

        static int isHodder(int n)
        {
            int k = n;
            for (int i = 2; i <= n / 2;i++ )
            {
                if ((n % 1) == 0)
                {
                    return 0;
                }
                else
                {
                    for (int j = 2; j <= k;j++ )
                    {
                        if (n == (2^ j)  - 1)
                        {
                            return 1;
                        }
                        else
                        {
                            return 0;
                        }
                        k=(2^j)-1;
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在"static int isHodder(int n)"'hodder.Program.isHodder(int)'上得到错误:并非所有代码路径都返回一个值

和"k =(2 ^ j)-1"上的"无法访问的代码"

Agi*_*Jon 7

第一个错误,"并非所有代码路径都返回一个值"意味着代码可以遵循的路径,其中不返回任何值(即:调用isHodder(1)).您需要在for循环之外返回一些值.另外,因为你在第二个for循环中有一个if/else块

k=(2^j)-1;
Run Code Online (Sandbox Code Playgroud)

永远不会被执行.

    static int isHodder(int n)
    {
        int k = n;
        for (int i = 2; i <= n / 2; i++)
        {
            if ((n % 1) == 0)
            {
                return 0;
            }
            else
            {
                for (int j = 2; j <= k; j++)
                {
                    if (n == (2 ^ j) - 1)
                    {
                        return 1;
                    }
                    else
                    {
                        return 0;
                    }
                    k = (2 ^ j) - 1;
                }
            }
        }
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)