在本站曾经有两篇文中分别实现在主方法中直接求1~50之间的奇数和与偶数和以及在某个类中定义方法来计算并输出。
本文在此基础上继续探讨在类中定义带输出型参数的方法来解决本题。具体思路如下:
(1)在类EvenOdd中定义循环的开始值和结束值;
(2)在类的构造方法中由键盘输入开始值及结束值,如果输入有误,则提示输入错误,则自动进入下一轮输入,循环直到两个数输入正确为止;
(3)在类中定义求奇数和与偶数和的方法EvenOddSum,其带有两个输出型参数even和odd,用于分别带出其偶数和与奇数和;
(4)在测试类Test中定义主方法,定义类EvenOdd的实例和两个整型变量,用于接收EvenOddSum带出的两个值,并将其输出。
从以上叙述中可知,此方法具有通用性,可以求任何区间之间的奇数和与偶数和。
此方法中仍有需要探讨的地方,如输入的结束值比开始值小的情况,此程序处理起来会出现问题。
本案例源代码如下:
using System;
namespace EvenOdd2
{
class EvenOdd
{
int begin; //开始值
int over; //结束值
bool isRight; //输入正确与否
public EvenOdd()
{
isRight = false;
while(!isRight) //循环输入,当输入正确时退出循环
{
try
{
Console.WriteLine("请输入第一个数:");
begin = int.Parse(Console.ReadLine());
Console.WriteLine("请输入第二个数:");
over = int.Parse(Console.ReadLine());
isRight = true;
}
catch
{
Console.WriteLine("数据格式错误,请重新输入!");
isRight = false;
}
}
}
/// <summary>
/// 求出偶数和奇数之和
/// </summary>
/// <param name="even">输出型参数,保存偶数之和</param>
/// <param name="odd">输出性参数,保存奇数之和</param>
public void EvenOddSum(out int even,out int odd)
{
even = 0;
odd = 0;
for(int i = begin;i<=over;i++)
{
if(i%2==0)
even += i;
else
odd += i;
}
}
/// <summary>
/// 返回开始值
/// </summary>
/// <returns>开始值</returns>
public int RetBegin()
{
return begin;
}
/// <summary>
/// 返回结束值
/// </summary>
/// <returns>结束值</returns>
public int RetOver()
{
return over;
}
}
class Test
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
static void Main(string[] args)
{
int evenSum,oddSum;
EvenOdd eo = new EvenOdd();
eo.EvenOddSum(out evenSum,out oddSum);
Console.WriteLine("{0}~{1}之间的偶数之和为:{2},奇数之和为:
{3}",eo.RetBegin(),eo.RetOver(),evenSum,oddSum);
}
}
}
运行结果为:
新闻热点
疑难解答