在本站曾經有兩篇文中分別實現在主方法中直接求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);
}
}
}
運行結果為:
新聞熱點
疑難解答