3

我试图让 for 语句迭代并i0 to 100.

这将显示在屏幕上。

我的问题不是很理解我想在方法中返回什么(不是 Main),而是如果我需要返回任何东西。

我不想返回一个int。我认为我没有要返回的字符串,因为我希望它执行一个函数而不是返回一个值。我想我搞砸了方法类型。

我希望该方法简单地通过 if 语句,如果参数匹配,则在屏幕上显示结果,如果不移动到底部并从 for 语句重新开始。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace Project5
    {
      class Program
      {
        int i = 0;


        static void Main(int i)
        {
            do
            {
                for (i = 0; i < 101; i++)
                {
                    Words(); 
                }
            } while (i < 101);

            Console.ReadLine();
        }

        static string Words (int i) //<---Here I think I am using the incorrect method type
        {//Which then screws up the method when it is called above. I have been going                
        //through method types but dont see anything that when called just perform a         
        //function and displays results.

            string f = "Word1";
            string b = "Word2";

            if (i == 3)
            {
                Console.Write(f);

                if (i == 5)
                {
                    Console.Write(b);

                    if (0 == (i % 3))
                    {
                        Console.Write(f);

                        if (0 == i % 5)
                        {
                            Console.Write(b);
                        }
                        else
                        {
                            Console.WriteLine(i);  
                        }
                    }

                }
            }

        }
    }
}
4

3 回答 3

3

改变

static string

static void

那么它不必返回任何东西

另外,您可能应该删除 do 循环,因为它是多余的, for 循环应该做您想做的事情(我认为)。

于 2012-06-24T17:40:09.480 回答
2

据我所知,除了返回类型不是void你有几个问题

  1. 您需要在 for 循环中将变量传递i给 words 方法。Words(i);
  2. 删除while周围的,for因为他们正在完成同样的事情。
  3. 您在Words中的逻辑是错误的。i不能同时等于 3 和 5,所以除了你的第一个Console.WriteLine();将永远执行。相反,您应该取消嵌套它们,以便在每次迭代时检查它们。
于 2012-06-24T17:48:35.283 回答
0

如前所述,将方法签名从static string Wordsto更改为static void Words您知道不再需要返回Words方法中的任何内容。void是一个关键字,在方法签名的上下文中不引用任何内容。

Words此外,当您调用它时,您似乎没有传递所需的参数Main。我假设Words();你不是为了Words(i);

最后,您可能希望查找静态类成员和实例成员之间的区别。简而言之,实例成员可以访问同一个类的静态成员,但静态成员不能访问实例成员。我提出这个是因为您i在类中声明为实例i变量,但也在两个静态方法中创建了局部变量。在您的情况下最终发生的是该实例 i实际上从未被使用过。相反,这两种静态方法都使用自己的局部i变量。

于 2012-06-24T17:46:17.277 回答