C#从嵌套的if语句返回结果

时间:2012-06-24 17:38:07

标签: c# string loops for-loop int

我试图让for语句迭代并将数字i从0增加到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);  
                    }
                }

            }
        }

    }
}

}

3 个答案:

答案 0 :(得分:3)

更改

static string

static void

然后它不必返回任何东西

你也应该删除do循环,因为它是多余的,for循环应该做你想要的(我认为)。

答案 1 :(得分:2)

除了返回类型不是void之外,你可以看到几个问题

  1. 您需要将变量i传递给for循环中的此类Words(i);字词。
  2. 删除while周围的for,因为他们正在完成同样的事情。
  3. 你在言语中的逻辑是错误的。 i不能都等于3和5,所以只有你的第一个Console.WriteLine();才能执行。相反,你应该取消它们,以便在每次迭代时都检查它们。

答案 2 :(得分:0)

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

此外,当您在Words中调用Main时,您似乎没有传递Words();所需的参数。我假设代替Words(i);,而不是i

最后,您可能希望查找静态类成员与实例之间的区别。简而言之,实例成员可以访问同一类的静态成员,但静态成员无法访问实例成员。我提出这个问题是因为您在类中将i声明为实例变量,但也在 static 方法中创建了本地i变量。在您的情况下最终发生的是实例 i从未实际使用过。相反,两个静态方法都使用自己的本地{{1}}变量。