使用if语句执行while循环以打印奇数

时间:2013-04-12 04:34:02

标签: c# loops if-statement while-loop do-while

目前我正在学习循环。我正在尝试创建一个控制台应用程序,它使用do while循环来打印20到0之间的所有奇数整数。

为什么当我在代码下方取消注释if语句时,不打印任何内容并且永远不会完成?

using System;

class Program
{
  static void Main(string[] args)
  {
     int i = 20;
     do 
     {
        // if (i%2 !=0)
        {
           Console.WriteLine(
              "When counting down from 20 the odd values are: {0}", i--);
        }
      } while (i >=0);
   }
}

4 个答案:

答案 0 :(得分:3)

我认为你遇到的主要问题是减量(i--)只发生在if块内。这意味着当条件失败时,您将进入一个infite循环。您可以在if块之外移动减量来修复它。试试这个:

Console.Write("When counting down from 20 the odd values are: ");
do 
{
    if (i % 2 != 0)
    {
        Console.Write(" {0}", i);
    }

    i--;
} while (i >= 0);

我还将第一个Console.Write移到了循环之外,以减少输出中的冗余。这将产生:

  

当从20倒数时,奇数值是:19 17 15 13 11 9 7 5 3 1

答案 1 :(得分:1)

for循环可能更容易理解:

Console.WriteLine("When counting down from 20 the odd values are: ");
for( int i = 20; i >= 0; i--)
{
    if (i%2 !=0)
    {
       Console.Write(" " + i);
    } 
}

答案 2 :(得分:0)

对不起,我知道这真的很老了,最初的问题是DO不是FOR,但我想补充一下我做了什么来完成这个结果。当我用Google搜索问题时,尽管我的查询是FOR循环,但这是首先返回的。希望有人能在路上发现这有用。

下面将打印数组的奇数索引 - 在本例中为Console App args。

using System;
namespace OddCounterTest
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 0; i < args.Length; i++)
            {
                Console.WriteLine(i);
                i++;
            }
        }
    }
}

带有6个参数的输出将是:     1     3     5

将i ++移动到for循环的第一步将获得偶数。

using System;
namespace EvenCounterTest
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 0; i < args.Length; i++)
            {
                i++;
                Console.WriteLine(i);
            }
        }
    }
}

输出将是:     2     3     4

这是设置,因此您也可以获得args的实际值,而不仅仅是args索引的计数和打印。只需创建一个字符串并将字符串设置为args [i]:

string s = args[i];
Console.WriteLine(s);

如果您需要计算和排除&#34; 0&#34;如果您正在打印最初询问的问题,请设置您的for循环,如下所示:

for (int i = 1; i <= args.Length; i++);

注意&#34;我&#34;在这个例子中,最初设置为1,i小于或等于数组长度,而不是简单地小于。注意你的小于或小于/等于或者你会得到OutOfRangeExceptions。

答案 3 :(得分:-1)

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

namespace Do_while_Test
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 20;
            Console.WriteLine();
            Console.WriteLine("A do while loop printing odd values from 20 - 0 ");
         do 
         {
            if (i-- %2 !=0)
            {
             Console.WriteLine("When counting down from 20 the odd values are: {0}", i--);
            }

         } while (i >=0);
         Console.ReadLine();  
        }

    }
}