我试图让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);
}
}
}
}
}
}
}
答案 0 :(得分:3)
更改
static string
到
static void
然后它不必返回任何东西
你也应该删除do循环,因为它是多余的,for循环应该做你想要的(我认为)。
答案 1 :(得分:2)
除了返回类型不是void
之外,你可以看到几个问题
i
传递给for循环中的此类Words(i);
字词。while
周围的for
,因为他们正在完成同样的事情。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}}变量。