.net 反序題目的詳細(xì)解答第2/2頁(yè)
常見(jiàn)錯(cuò)誤
在各種答案,以及平時(shí)面試過(guò)程中,這道題總歸會(huì)有一些非常典型的錯(cuò)誤發(fā)生。其中給老趙的感覺(jué)也非常有意思,不知其中的“思路”是否如老趙猜測(cè)那樣。
在方法中進(jìn)行輸入和輸出
有不少朋友在代碼里放置了這樣的代碼:
static void Reverse(int[] array, int begin, int end)
{
Console.WriteLine("請(qǐng)輸入xxx");
array[0] = Int32.Parse(Console.ReadLine());
...
for (int i = 0; i < array.Length; i++)
{
Console.WriteLine(i);
}
}
為什么會(huì)出現(xiàn)這種情況?老趙估計(jì)是受到了某些培訓(xùn)機(jī)構(gòu)的影響(觀察出現(xiàn)這個(gè)問(wèn)題的朋友們的分布便知)。這些培訓(xùn)一再?gòu)?qiáng)調(diào)輸入、輸出,而沒(méi)有讓學(xué)員有任何“模塊”,“類庫(kù)”,“輔助方法”的概念。學(xué)員的觀念中,任何程序都要向用戶去索要“輸入”,并且要“輸出”,否則就不算是程序。
打印錯(cuò)誤,而不是拋出異常
代碼如下:
static void Reverse(int[] array, int begin, int end)
{
if (array == null)
{
Console.WriteLine("數(shù)組為空");
return;
}
...
}
除了和上面類似的“思維”以外,這說(shuō)明有些朋友還沒(méi)有形成“拋出異?!钡挠^念。這意味著在過(guò)往的編程經(jīng)驗(yàn)中,可以說(shuō)完全沒(méi)有“參數(shù)校驗(yàn)”的概念在頭腦里面。培訓(xùn)機(jī)構(gòu)只是一味地CRUD,展示,寫入,卻沒(méi)有“拋出異?!钡南敕?。同理,即使在題目中已經(jīng)明確寫清了是“拋出”異常,有些朋友的寫法是這樣的:
static void Reverse(int[] array, int begin, int end)
{
try
{
// 交換數(shù)據(jù)
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
很明顯,他們只有“捕獲”異常的概念——自然是框架本身拋出的異常——而不知“拋出”異常。
參考答案
以下是老趙給出的參考答案:
static void Reverse(int[] array, int begin, int end)
{
if (array == null)
{
throw new ArgumentNullException("array", "array不能為空");
}
if (begin < 0)
{
throw new ArgumentOutOfRangeException("begin", "begin不能小于0");
}
if (end < begin)
{
throw new ArgumentOutOfRangeException("end不能小于begin", (Exception)null);
}
if (end >= array.Length)
{
throw new ArgumentOutOfRangeException("end", "end超過(guò)array最大下標(biāo)");
}
while (end > begin)
{
int temp = array[begin];
array[begin] = array[end];
array[end] = temp;
begin++;
end--;
}
}
相關(guān)文章
ASP.NET中利用存儲(chǔ)過(guò)程實(shí)現(xiàn)模糊查詢
ASP.NET中利用存儲(chǔ)過(guò)程實(shí)現(xiàn)模糊查詢...2006-09-09完美解決在ModalPopupExtender中使用CalendarExtender時(shí)被層遮擋的問(wèn)題
ASP.NET AJAX Control Toolkit是一組非常不錯(cuò)的基于asp.net的ajax控件,它建立在asp.net 3.0的ScriptManager組件之上,提供了很多非常實(shí)用的效果和功能。2009-11-11asp.net JavaScript插件 JavaScript Function Outliner
一個(gè)JavaScript Function Outliner插件 第四版本 支持內(nèi)嵌javascript,且可以對(duì)javascript進(jìn)行壓縮2008-07-07記錄游客頁(yè)面訪問(wèn)IP的簡(jiǎn)易實(shí)現(xiàn)代碼 (asp.net+txt)
記錄游客頁(yè)面訪問(wèn)IP的簡(jiǎn)易實(shí)現(xiàn) (asp.net for notepad)2010-01-01gridview實(shí)現(xiàn)服務(wù)器端和客戶端全選的兩種方法分享
這篇文章主要介紹了gridview實(shí)現(xiàn)服務(wù)器端和客戶端全選的兩種方法,需要的朋友可以參考下2014-02-02.Net結(jié)合JS實(shí)現(xiàn)URL編碼與解碼
這篇文章介紹了.Net結(jié)合JS實(shí)現(xiàn)URL編碼與解碼的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03.aspx中的命名空間設(shè)置實(shí)現(xiàn)代碼
原來(lái)以為.aspx 與.cs文件是屬于同一個(gè)類,今天才意識(shí)到自己錯(cuò)了。2009-04-04使用VSCode開(kāi)發(fā)和調(diào)試.NET Core程序的方法
這篇文章主要介紹了使用VSCode開(kāi)發(fā)和調(diào)試.NET Core程序的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05