如何使用for函数在间隔中写出奇数

时间:2019-01-28 19:10:58

标签: c# for-loop

所以我的作业是我必须从用户那里取两个数字,然后我必须在该间隔内写出奇数。但是下面的代码不起作用。它写出“ TrueFalseTrueFalse”。

int szam;
int szam2=0;
int szam3=0;
int szam4=0;
Console.Write("Please give a number:");
                szam = Convert.ToInt32(Console.ReadLine());
                Console.Write("Please give another number:");
                szam2 = Convert.ToInt32(Console.ReadLine());
                if (szam>szam2)
                {
                    for (szam3=szam, szam4 = szam2; szam4 < szam3; szam4++)
                    {
                        Console.Write(szam2 % 2==1);
                    }
                }
                else
                {
                    for (szam3 = szam, szam4 = szam2; szam3 < szam4; szam3++)
                    {
                        Console.Write(szam3 % 2 ==1);
                    }
                }

因此,如果两个数字分别为0和10,则程序必须写出1、3、5、7和9

2 个答案:

答案 0 :(得分:0)

命名变量时我会小心一点,是的只是一小段代码,但这会使试图读取它的人感到困惑。

根据要求,我想您希望所有的奇数都在一定范围内。

const string comma = ",";
static void Main(string[] args)
{
    int start = getNumber();
    int end = getNumber();
    if(start > end)
    {
        int placeHolder = end;
        end = start;
        start = placeHolder;
    }
    string delimiter = string.Empty;
    for(int i = start; i < end; i++)
    {
        if(i % 2 == 1)
        {
            Console.Write(string.Concat(delimiter,i.ToString()));
            delimiter = comma;
        }
    }
    Console.ReadLine();//otherwise you wont see the result
}
static int getNumber()
{
    Console.Write("Please enter a number:");
    string placeHolder = Console.ReadLine();
    int toReturn = -1;
    if (int.TryParse(placeHolder, out toReturn))
        return toReturn;
    return getNumber();
}

如Juharr在评论中所述,您需要检查结果以打印实际数字。

答案 1 :(得分:0)

您可以编写的宽度Linq:

int szam = 20;
int szam2= 30;

var odds = Enumerable.Range(szam2 > szam ? szam : szam2, Math.Abs(szam-szam2))
.Where(x=>x % 2 != 0);

输出:

21 23 25 27 29

// so we create a range from low to high (Enumerable.Range(..)
// take only the odd values (x % 2 != 0)

只需将其包装在字符串中即可,加入一个字符串:

  string text = String.Join(",",Enumerable.Range(szam2 > szam ? szam : 
                szam2,Math.Abs(szam-szam2))
                .Where(x=>x % 2 != 0));