为什么会出现这些错误? c# - 刽子手游戏

时间:2016-07-10 01:04:12

标签: c#

我对编码很新(特别是c#) - 这是编程基础课的作业 - 我没有找到答案 - 我正在找人解释我的原因得到这两个错误的布尔方法,我应该创建以检查用户是否猜测一个字母或一个刽子手游戏中的完整单词。 我得到的错误是 - '检测到无法访问的代码 - 对于idx ++部分 - 由于我在其他单独的方法中使用它,因此没有意义。 和Program.CheckGuess(char [],char [],char [],string:并非所有代码路径都返回一个值。

我知道我还没有完全完成这个方面。它可能正盯着我看 - 只是寻找一些指导。感谢。

static bool CheckGuess(char[] secrets, char[] mask, char[] letters, string guess)
{ 
    int misses = 0; bool condition = false;

    for (int idx = 0; idx < secret.Length; idx++)
    {
        guess.ToCharArray();
        if (mask[idx] == guess[idx])
        {
            //reveal character or word
            condition = true;
        } 
        else
        {
            misses = misses + 1;
            condition = false;
        }
        return condition;
    }

 }

2 个答案:

答案 0 :(得分:1)

因为您有require "rails_helper" feature "Mailchimp" do describe "Manage list" do scenario "adds new subscriber to list" do VCR.use_cassette "mailchimp/subscriber" do visit new_subscriber_path fill_in "first_name", with: "John" fill_in "last_name", with: "Mayer" fill_in "phone_number", with: "61615551233" fill_in "email", with: "john@rowster.com" click_button "Sign Up" expect(page).to have_content "You have successfully subscribed to our service" end end end end 声明。

当达到return循环中的return时,程序跳出循环,从而使for无法访问。

答案 1 :(得分:1)

您应该理解,return语句在执行时会使控件跳出方法并返回给调用者。

在您的代码中,您的return is语句放在for循环中。当执行for循环的迭代时,控件立即跳出方法并返回到方法的调用者。

如您所知,for循环标头(idx++)中的最后一部分是在迭代执行完毕后执行的。但是,在您的情况下,迭代永远不会完成,因为它只是在控制到达return时跳回到调用者。这就是第一个错误发生的原因。

您还应该了解,每个没有void作为返回类型的方法无论如何都需要return

那么如果for循环的条件(中间部分)永远不是true怎么办?永远不会执行for循环,对吧?如果没有执行for循环,那么该方法应返回什么?

错误表明并非所有代码路径都返回一个值,因为如果不执行for循环,该方法将不会返回。

要解决此问题,您只需将return语句移出for循环:

static bool CheckGuess(char[] secrets, char[] mask, char[] letters, string guess)
{ 
    int misses = 0; bool condition = false;

    for (int idx = 0; idx < secret.Length; idx++)
    {
        guess.ToCharArray();
        if (mask[idx] == guess[idx])
        {
            //reveal character or word
            condition = true;
        } 
        else
        {
            misses = misses + 1;
            condition = false;
        }
    }
    return condition;
 }