C#每三个数字打印一次!

C#每三个数字打印一次!,c#,C#,在C#控制台应用程序中执行输出所需的帮助 我有一个最大的数字 int maxNr = 10; int myValue = 1; public void myMethod(){ int choice = int.Parse(Console.ReadLine()); // only 1 or 2 accepted. //Only choice = 1 in displayed here. if(choice == 1){ while(myValue <= maxNr){

在C#控制台应用程序中执行输出所需的帮助

我有一个最大的数字

int maxNr = 10;
int myValue = 1;

public void myMethod(){
int choice = int.Parse(Console.ReadLine());  // only 1 or 2 accepted.

//Only choice = 1 in displayed here.
if(choice == 1){
   while(myValue <= maxNr){
     Console.WriteLine(myValue);
     myValue = myValue + 3;
   }
}
}
intmaxnr=10;
int-myValue=1;
公共方法(){
int choice=int.Parse(Console.ReadLine());//只接受1或2。
//此处仅显示选项=1。
如果(选项==1){

而(myValuemyValue在第一次调用后停留在13,因此代码不会在第二次进入循环(i=0;i为什么不使用此选项

for (int i = n; i <= maxNr; i = i+3) {
    Console.WriteLine(i);
}

for(int i=n;i在while循环之前添加:

if (myValue >= 10)
    myValue -= 10;
编辑:

1.如果我理解正确,预期输出为:

1st call 1, 4, 7, 10.
2nd call: 3, 6, 9.
3rd call 2, 5, 8.
2.正如一些人所建议的,您应该使用
for
循环,而不是
while
循环:

if (myValue >= maxNr)
    myValue -= maxNr;

for (; myValue <= maxNr; myValue += 3)
{
    Console.WriteLine(myValue);
}
if(myValue>=maxNr)
myValue-=maxNr;

对于(;myValuemyValue未在本地定义,因此在再次调用该方法时需要将其设置为0,否则它仍将为10,并且您不会进入循环。

public void myMethod(){
public void myMethod(){
int choice = int.Parse(Console.ReadLine());  // only 1 or 2 accepted.

int maxNr = 10;
int myValue = choice;

//Only choice = 1 in displayed here.
if(choice == 1){
   while(myValue <= maxNr){
     Console.WriteLine(myValue);
     myValue = myValue + 3;
   }
}
}
int choice=int.Parse(Console.ReadLine());//只接受1或2。 int maxNr=10; int myValue=选择; //此处仅显示选项=1。 如果(选项==1){
而(myValue您需要将
myValue
存储在临时变量中,并在退出该方法之前对其进行更新。据我所知,实现输出的代码如下所示

static int maxNr = 10;
static int myValue = 1;

private static void Test()
{
    int lastValue = myValue;
    int choice = int.Parse(Console.ReadLine());  // only 1 or 2 accepted.

    //Only choice = 1 in displayed here.
    if (choice == 1)
    {
        while (myValue <= maxNr)
        {
            Console.WriteLine(myValue);
            myValue = myValue + 3;
        }
    }

    if (lastValue == 1)
    {
        myValue = lastValue + 3 - 1;
    }
    else
    {
        myValue = lastValue - 1;
    }
}
}

输出
1

4

7

10


3

6

9


2

5

8



请注意,用户需要在每次函数调用时输入值
1

您的意思是下一次输出应该是:3,6,9,12,15,18?而且,这听起来像是家庭作业问题。如果是,您应该将其标记为家庭作业…您所说的“下次调用函数”到底是什么意思?您希望用户每次输入一个数字还是只输入一次?您的确切问题是什么?代码可以,但带有“下次调用函数”的部分,从3开始,下次从2开始。你确定顺序吗?我唯一的问题是当它超过10时。例如,myValue是9,如果我加上3,那么它将超过10,这是不允许的。相反,方法调用应该从2开始(从9、1、2开始的三个步骤)。我不明白。你希望每次通话都有相同的输出?或者只是在10(10+1=1)时最大值
myValue
?编辑:你已经在上面的评论中回答了。虽然应该是
myValue>10
,但10仍然显示为(s)他想要它。它不应该在while循环之前,而是在增加myValue之后。@Sören:我的答案是在第四次修订时(第二次调用:3,6,9。第三次调用2,5,8)。如果我正确理解当前修订(第二次调用:3,6,9,2,5,8)那么您是对的。@Sören:您是对的。要做到这一点,您应该在下次调用该函数时使用它-还有另一个要求!

static void Main(string[] args)
{
    Test();
    Test();
    Test();

Console.ReadLine();