C#基礎2——②try-catch,方法及其深入,局部變量,通過返回值傳遞變量的值

一、try-catch

簡單用法——在try塊中獲取並使用資源,在catch塊中處理異常情況,並在finally塊中釋放資源

try
{
//有可能出現錯誤的代碼
}
catch
{
//如果try中的代碼出現異常,則進去catch中
}
finally
{
//最後執行的代碼
}

Console.WriteLine("輸入數字");

try//try中寫可能會出現異常的語句
{
int num = Convert.ToInt32(Console.ReadLine());
}
catch (Exception ex)//如果上面的代碼不出現異常,就不走catch中的代碼
{
	Console.WriteLine(ex.Message);
}
Console.ReadKey();
int[] nums = {3,4,5};

try
{
	nums[3] = 90;//超範圍了
}
catch (Exception ex)
{
	//Console.WriteLine(ex.Message);
	throw;//將問題拋出
}
finally
{
	Console.WriteLine("無論是否出現異常都會走這裏")}
Console.ReadKey();

二、方法

有了方法之後,寫代碼就簡單了

1、方法的語法

[訪問修飾符] static 返回值 方法名 ([參數列表])
{
方法體
}

2、實例

無方法的前提下:

//早上
//洗碗,刷鍋,切菜,放油,炒菜,煮飯,喝杯小酒
Console.WriteLine("洗碗,刷鍋,切菜,放油,炒菜,煮飯,喝杯小酒");

//中午
//洗碗,刷鍋,切菜,放油,炒菜,煮飯,喝杯小酒
Console.WriteLine("洗碗,刷鍋,切菜,放油,炒菜,煮飯,喝杯小酒");

//晚上了
//洗碗,刷鍋,切菜,放油,炒菜,煮飯,喝杯小酒
Console.WriteLine("洗碗,刷鍋,切菜,放油,炒菜,煮飯,喝杯小酒");

//半夜
//洗碗,刷鍋,切菜,放油,炒菜,煮飯,喝杯小酒
Console.WriteLine("洗碗,刷鍋,切菜,放油,炒菜,煮飯,喝杯小酒");

有方法之後:
一個電話即可——打給飯店

static void Main(string[] arge)
{
	//在本類中調這個方法,可以直接——   方法名();   就可以使用
	Show();
	Console.ReadKey();
}
public static void Show()//此方法無返回值,無參數
//如果方法前加static,就叫靜態方法
{
	Console.WriteLine("洗碗,刷鍋,切菜,放油,炒菜,煮飯,喝杯小酒");
}

3、方法深入

①最簡單的方法無參數,無返回值

static void Main(string[] args)
{
	Show();  //直接調方法
	Console.ReadKey();
}

public static void Show()
{
	Console.WriteLine("請輸入第一個數");
	int num1 = Convert.ToInt32(Console.ReadLine());
	Console.WriteLine("請輸入第二個數");
	int num2 = Convert.ToInt32(Console.ReadLine());
	int number = num1 > num2 ? num1 : num2;	
	Console.WriteLine("最大值爲{0}", number);
}
	

改進後

static void Main(string[] args)
{
	Console.WriteLine("請輸入第一個數");
	int number1 = Convert.ToInt32(Console.ReadLine());
	Console.WriteLine("請輸入第二個數");
	int number2 = Convert.ToInt32(Console.ReadLine());
	
	int max = Show(number1, number2);
	Console.WriteLine("最大值就是{0},我自己寫都行",max);
	Console.ReadKey();
}
public static int Show(int num1,int num2)
{	
	int number = num1 > num2 ? num1 : num2;	
	return number; 
}

再次改進方法裏的代碼變成:

public static int Show(int num1,int num2)
{	
	return num1 > num2 ? num1 : num2; 
}

②有無參數就在寫完方法後,先打半個 括號,看“半張紙”中的方法括號裏有無參數,來進行判斷
有無返回值就看“半張紙”的左上角是否有void,如果沒有void,說明有返回值
返回值類型也看“半張紙”中的提示

//有返回值,爲int類型;有參數,爲string類型
int num = Convert.ToInt32("3");   
//有返回值,爲bool類型,有參數,而且是兩個,一個是string類型 一個是 out + 變量名
bool result = int.TryParse("3", out num);
//沒有參數,有返回值,爲string類型
string str = Console.ReadLine();

③命名規則:方法名開頭大寫,參數名開頭小寫,參數名、變量名要有意義
方法的調用,對於靜態方法,調用有兩種方式
如果在同一個類中,直接寫名字調用就行了
或者類名.方法名();
return 可以立即退出方法

4、方法練習

static void Main(string[] args)
{
	int[] nums = {23, 45, 67, 98, 12};
	
}
public static void AddArray(int[]numbers)
{
	int sum = 0;
	int max = int.MinValue;
	int min = int.MaxValue;
	for(int i = 0; i < numbers.Length; i++)
	{
		sum += numbers[i];
		if(numbers[i]>max)
		{
			max = numbers[i];
		}
		if(numbers[i]<min)
		{
			min = numbers[i];
		}
	}
	Console.WriteLine("最大值爲{0}",max);
	Console.WriteLine("最小值爲{0}",min);
	Console.WriteLine("和爲{0}",sum);
}

三、局部變量

//public static int _numint = 90;//全局變量
static void Main(string[] args)
{
	int number = 90;
	Test(number);//通過傳參數,可以把這個方法中的值,傳到另一個方法中
	//傳參   返回值
	Console.ReadKey();
}
public static void Test(int num)
{
	num = num + 3;
	Console.WriteLine(num);
}

四、通過返回值傳遞變量的值

static void Main9(string[] args)
{
	//寫一個方法,判斷一個年份是否是閏年
	Console.WriteLine("請輸入年份");
	string str = Console.ReadLine();  //用來接收  年份
	int yearInt = Convert.ToInt32(str);//字符串類型 轉 int類型

	bool result = Isyear(yearInt);
	if(result)
	{
		Console.WriteLine("閏年");
	}
	else
	{
		Console.WriteLine("平年");
	}
	Console.ReadKey();
}
public static bool Isyear(int year)
{
	if(year%400==0||year%4==0&&year%100!=0) //判斷閏年的條件
	{
		return true;
	}
	else
	{
		return false;
	}
}

改進——有個方法,傳過去一個 字符串 返回的是一個數字

static void Main9(string[] args)
{
	//寫一個方法,判斷一個年份是否是閏年
	Console.WriteLine("請輸入年份");
	//string str = Console.ReadLine();
	//int yearInt = Convert.ToInt32(str);

	int yearInt = OutPutNumber(Console.ReadLine());//調用新的方法
	bool result = Isyear(yearInt);
	
	if(result)
	{
		Console.WriteLine("閏年");
	}
	else
	{
		Console.WriteLine("平年");
	}
	Console.ReadKey();
}
public static bool Isyear(int year)
{
	if(year%400==0||year%4==0&&year%100!=0)
	{
		return true;
	}
	else
	{
		return false;
	}
}

public static int OutPutNumber(string strNumber)  //新的方法
{
	while(true)
	{
		try
		{
			int number = int.Parse(strNumber);
			return number;
		}
		catch(Exception)
		{
			Console.WriteLine("輸入錯誤,請重新輸入");
			strNumber = Console.ReadLine();
		}
	}
	Console.WriteLine();
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章