c# - 使用 Modulus 进行偶数/奇数循环计数
问题描述
我正在尝试创建询问用户是否要输入数字的代码。然后它会询问他们是否希望将数字显示为偶数或赔率,并为起点和终点取高点和低点。
public void RunExercise()
{
int runthroughs = 0;
Console.WriteLine("Greetings, User!\nWelcome to the NumberPrinter!");
Console.WriteLine("Do you want to quit (1), or print numbers (2)?");
int userinp = int.Parse(Console.ReadLine());
while (userinp != 1)
{
runthroughs = runthroughs + 1;
Console.WriteLine("Do you want to print even (1) or odd (2) numbers?");
int oddeveninp = int.Parse(Console.ReadLine());
if (oddeveninp == 1 || oddeveninp == 2)
Console.WriteLine("Please enter a maximum value:");
int maxy = int.Parse(Console.ReadLine());
Console.WriteLine("Now enter a minimum value:");
int miny = int.Parse(Console.ReadLine());
Console.WriteLine("Highest number? {0}", maxy);
Console.WriteLine("Lowest number? {0}", miny);
int i;
for (i = miny; i <= maxy; i++)
{
if (i % 2 == 0)
{
Console.WriteLine(i+ " ");
}
else if (i % 2 == 1)
{
Console.WriteLine(i + " ");
}
}
}
}
就目前而言,无论用户提示输入奇数还是偶数,它都会打印出整个数字数组。
解决方案
您的循环应替换为:
for (i = miny; i <= maxy; i++)
{
bool isEven = ( i % 2 ) == 0;
if ( isEven && oddeveninp == 1
|| !isEven && oddeveninp == 2 )
{
Console.WriteLine( i );
}
}
主要问题是,如果数字是偶数,或者如果数字是奇数,则将数字写入控制台。由于任何数字都是奇数或偶数,这意味着您将始终打印i
.
这里的关键点是当它是偶数并且用户选择打印偶数时你必须打印数字。相反,当它是奇数并且用户选择打印奇数时,您必须打印该数字。
希望这可以帮助。
推荐阅读
- html - 在 Ngb-Accordion 中对内容进行排序
- grails - Grails - grails-spring-security-rest - 无法从 application.yml 加载 jwt 机密
- oracle - APEX 数据加载向导 - 将 2 个 .csv 列连接到 1 个数据库列
- angularjs - 在 AngularJS 中压缩数据
- spring - 带有 Angular 6 前端的 Spring Boot 登录 API
- python - Changing field in Django Form, overriding clean()
- c# - C# NestedClass Expanded Property to Refresh/Invalidate Control in Design Mode
- python - How to select top level columns in multi header pandas dataframe
- mysql - MySQL 服务器远程访问被拒绝
- javascript - Adding mouse event to dynamic created element Vuejs