所以我的作业是我必须从用户那里取两个数字,然后我必须在该间隔内写出奇数。但是下面的代码不起作用。它写出“ 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
答案 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));