返回列表 發帖
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;

  6. namespace CSA01
  7. {
  8.     class CSA01
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             string line;
  13.             int num1, num2, sum;

  14.             line = Console.ReadLine();
  15.             try
  16.             {
  17.                 num1 = int.Parse(line);
  18.                 num1 = num1 % 2 == 0 ? num1 : 0;
  19.             }
  20.             catch (FormatException)
  21.             {
  22.                 num1 = 0;
  23.             }

  24.             line = Console.ReadLine();
  25.             try
  26.             {
  27.                 num2 = int.Parse(line);
  28.                 num2 = num2 % 2 == 0 ? num2 : 0;
  29.             }
  30.             catch (FormatException)//字串不符合所需的模式
  31.             {
  32.                 num2 = 0;
  33.             }

  34.             sum = num1 + num2;
  35.             Console.Write(sum);
  36.             Console.ReadKey();
  37.         }
  38.     }
  39. }
複製代碼
/*
比如說

string number1 = "123";

這個number1裡面存放的123,在C#裡其實是文字,所以是不能直接做數學運算的.

所以才會使用Parse和TryParse來先做轉換.

首先以Parse為例

string stringNumber = "123";
int number = int.Parse(stringNumber);

我們使用int.Parse()來將stringNumber轉換為integer再放入number的變數中

其中需要注意的是,Parse如果沒有轉換成功,比如說stringNumber = "123abc",那就無法轉換為整數.

這時Parse會跳Exception導致程式中斷.

所以二者比較建議使用TryParse,因為它會試著轉換,它會視成功與否回傳1或0,我們可以根據回傳值再決定後續處理

例子如下

string stringNumber = "123";
int number = 0;
bool conversionSuccessful = int.TryParse(stringNumber, out number);
if(conversionSuccessful)
{
           Console.WriteLine(number);
}
else
{
           Console.WriteLine("conversion failed");
}

我們使用int.TryParse()來對stringNumber進行轉換,而out是關鍵字一定要加,number就是轉換成功存放值的地方

所以我們可以根據轉換結果再決定處理方式,也就不會有Exception中斷的問題了.

*/
istak.teach2@gmail.com

TOP

返回列表