前言
如果Day2 的3個問題有試試看,那這裡附上解答
所以在處理大數值時,要特別注意(不然想像一下,銀行的戶頭超過21億的人去看存款,一超過21億就變負的,臉應該會綠掉吧….叫你主管給我出來!!!),確保程式碼能夠處理可能的整數溢位情況,或者考慮使用更大的整數資料型別,如 long。
如果你直接寫的是1+2+3+...+9+10然後在Console.WriteLine也可以。
但這裡其實可以使用梯形公式梯形公式**(首項 + 末項) * 項數量 / 2
是用來計算一個等差數列的總和,它對於計算連續數字的總和是一個快速的方法,尤其是當你知道起始值和結束值時(1 + 10) * 10 / 2
** ,結果是 55。
int firstTerm = 1;
int lastTerm = 10;
int numberOfTerms = 10;
int sum = (firstTerm + lastTerm) * numberOfTerms / 2;
Console.WriteLine("1+2+3+...+9+10的總和是:" + sum);
如果你想要計算 1+2+3+...+9+10 的總和,當然也可以使用迴圈來實現(但是這題裡面使用梯形公式只需要進行一次運算,而 for 迴圈需要進行10次遞增和加法操作。在這題裡面使用梯形公式的解法會比較有效率一些。)後面再來說明如何使用for迴圈,來去加減計算總和。
要使用C#計算199和200分別是奇數還是偶數,你可以使用餘數運算符 %
來檢查一個數是否可以被2整除。如果一個數可以被2整除,那麼它就是偶數,否則就是奇數。以下是示範的C#程式碼:
int number1 = 199;
int number2 = 200;
bool isOdd1 = number1 % 2 != 0; // 如果餘數不等於0,就是奇數
bool isOdd2 = number2 % 2 != 0; // 如果餘數不等於0,就是奇數
Console.WriteLine($"{number1} {(isOdd1 ? "是奇數" : "是偶數")}");
Console.WriteLine($"{number2} {(isOdd2 ? "是奇數" : "是偶數")}");
這題目主要是想要讓初學者記得,可以使用 % 找餘數的方式來去分辨數字是奇數或是偶數。
上面的程式碼中,使用 % 運算符來計算number1 和 number2 是否為奇數。
然後,我們使用三元運算式,裡面條件運算符 ? 來根據結果輸出相對應的訊息。這樣,你就可以確定199是奇數,而200是偶數。
特別解釋一下Console.WriteLine($"{number1} {(isOdd1 ? "是奇數" : "是偶數")}");
${number1}
和 ${number2}
:這是字串插值的部分。${}
是一種用來插入變數值到字串中的語法。在這裡, number1 和 number2 是整數變數,它們的值將被插入到相應的位置。(isOdd1 ? "是奇數" : "是偶數")
和 (isOdd2 ? "是奇數" : "是偶數")
:這是條件運算符(Conditional Operator)的部分。條件運算符用來根據條件的真假返回不同的值。這裡的例子呢是拿來檢查 isOdd1 和 isOdd2 的值,如果這兩個都是 true ,就回傳 "是奇數",否則返回 "是偶數"。看完還是不懂,專有名詞有夠多,越看越多…認真去查越查也越多...
沒關係(我剛開始也是這樣一知半解的,但請務必試著練習看看,要去思考有甚麼方式可以解題,有時候不見得只有一種解題方式,多方嘗試也可以自己比較出差異,根據不同狀況判斷怎麼使用),那後面也陸續都會解釋到~~
讓我們繼續看下去。
延續Day 2 的資料型態 - 字串 布林
上一篇剛講完數字,這裡當然就是針對文字的部分來說明啦~
字串(String)是一種數據型別,用來表示一系列的文字字符。字串可以包含字母、數字、符號、空格等等,通常用在儲存和處理文本數據,例如文字訊息、文件內容、用戶輸入等等,像是要輸入名字等等的。
字串是一個內建的數據型別,通常以雙引號括住(不可以用單引號),例如:
string myString = "這是一個字串。";
string myAge = "3"; // myAge 被視為字串,而不是數字
當你將一個值放在雙引號內,即使該值具有數字外觀,C# 仍然將其視為字串(string)資料型別。這是因為雙引號(")是字串文字的標識符,用來表示文字資料。
因此,無論你的字串內容是數字還是文字,只要使用了雙引號,它就會被視為字串。
string name = "Charlie";//變數用小寫開頭,不能用大寫或數字開頭
string fullName = "Charlie Puth";//若有多個意思,就第二個字首字母大寫
string greeting = "Hi " + name;
Console.WriteLine(greeting);
//下面打ReadLine();按F5之後視窗就不會自己關掉
Console.ReadLine();
string firstName = "Charlie";
string lastName = "Puth";
string greeting = "Hi "+ firstName + lastName;
Console.WriteLine(greeting);
Console.ReadLine();
string name = "Alice";
int age = 30;
string message = "我的名字是 " + name + ",年齡是 " + age + " 歲。";
Console.WriteLine(message);
字串與多個數字串接
這裡需要注意,如果希望後面的薪水先加總起來,再加上前面的字串呈現,但如果照這個寫法呈現的答案就會跟預期的不一樣。
int salary1 = 100;
int salary2 = 200;
int salary3 = 250;
string totalSalary = "你的薪水是:" + salary1 + salary2 + salary3;
Console.WriteLine(totalSalary );
可以看到下圖,這個薪水數字噌噌噌的往上升,收到這個的員工應該會嗨起來,但老闆可能會直接讓你出去了。
應該改成這樣
int salary1 = 100;
int salary2 = 200;
int salary3 = 250;
string totalSalary = "你的薪水是:" +( salary1 + salary2 + salary3);
Console.WriteLine(totalSalary );
string word1 = null;
string word2 = "Charlie";
string result = word1 + word2;
Console.WriteLine(result);
Console.Write("請輸入您的姓名: ");
//接受輸入值
string name = Console.ReadLine();
//接收輸入訊息一行字元
string greeting = "Hi "+ name;
Console.WritLine(greeting);
Console.Read();
//讀取輸入的一個字int,寫在最後只是為了不要立刻停止,避免閱讀困難,輸入完還要可以看到
以下是每個部分的詳細解釋:
Console.Write("請輸入您的姓名: ");
string name = Console.ReadLine();
string greeting = "Hi " + name;
Console.Read();
///<summary>
標籤用於描述下面的程式碼塊或成員(通常是類、方法、屬性等)的用途和功能。在Main的上方打三條斜線”///”就會出現,是註釋的一部分,用於提供有關程式碼的簡要說明和文檔。
如下,///<summary>
註釋提供了對 Add 方法的說明,包括它的功能以及參數的說明。
///<summary>
/// 這個方法用於計算兩個整數的和。
///</summary>
///<param name="a">第一個整數</param>
///<param name="b">第二個整數</param>
///<returns>兩個整數的和</returns>
public int Add(int a, int b)
{
return a + b;
}
反斜線 (反斜線在鍵盤Enter的上方)
\\
- 反斜線: 如果你想要在字串中包含實際的反斜線字符,則需要使用兩個連續的反斜線 \\
。例如:
string path = "C:\\Windows\\System32\\";
這個字串 path
包含了多個反斜線字符。
\"
- 雙引號: 如果你想要在字串中包含雙引號字符,則需要使用逸出字元 \"
。例如:
string quoted = "這是一個\"引號\"的示例";
這個字串 quoted
包含了雙引號字符。
如果沒有這樣寫,就會看到紅波浪的錯誤訊息
這些字符的使用方式源於早期的打字機和印刷機技術,其中回車意味著移動打字機的滑軌回到當前行的開頭,而換行意味著將紙卷向上以創建新的一行。(反斜線在鍵盤Enter的上方)
撥一下的行為是反斜線R(return)
紙往上捲就是反斜線N(new line)
//分號要記得輸入
Console.WriteLine("Hello, World!");
String message = ("早安,\r\n你好,\r\n不要吵!");
Console.WriteLine(message);
@
特殊字元可用為逐字識別項(verbatim string)。為什麼需要用到這個呢?因為字串不可以折成兩行,所以才會用這個可以折行的方式。
//在字串前方加一個小老鼠,直接Enter換行不要按空白鍵調整位置,不然空白鍵也會算輸入內容
string message = @"床前明月光
疑是地上霜
舉頭望明月
低頭吃便當";
Console.WriteLine(message);
講到這種字串串接的方式,就會是以下三種方式
string name = "Allen";
//用加號,缺點是較難閱讀
string message = "Hi"+name+" '+lastName;
//使用字串插值,後來才有的新寫法
string message2 = $"HI{name}{lastName}";
//用string.format,比較老的寫法
string message3 = string.Format("Hi"{0} {1}",name , lastName);
字串插值是一種方便的方式,用於將變數的值插入到字串中,以創建新的字串。在C#中,字串插值使用 ${}
語法,讓你可以在字串內插入變數,方法是將變數包裝在 ${}
中,可以輕鬆地組合文字和變數,使程式碼更具可讀性和彈性。
例子:
假設有兩個變數 name 和 age 分別表示名字和年齡,如果想要把變數的值插入到一個歡迎訊息中。
string name = "Alice";
int age = 30;
string welcomeMessage = $"歡迎,{name}!你今年 {age} 歲。";
Console.WriteLine(welcomeMessage);
在這個例子中,我們使用字串插值將 name 和 age 的值插入到 welcomeMessage
字串中。${name}
將被替換為 "Alice",${age}
將被替換為 30,最終的 welcomeMessage
將成為 "歡迎,Alice!你今年 30 歲。"。
這使得在字串中插入變數變得非常容易和直觀,並且提高了程式碼的可讀性。
string name = "Charlie";
int age = 31;
DateTime birthday = new DateTime(1991, 12, 2);
string template = "Hi, {0} ,您的年紀是{1}, 生日是{2}";
string template2 = "Hi, {0} , 生日是{2}";
string template3 = "Hi, {0} ,您的年紀是{1}, 生日是{2}";
string template4 = "Hi , 生日是{2}, {0} ,您的年紀是{1}";
//可以任意調動一插值,順序不同也可以
//template再根據想呈現的字串變數更改,下面的message裡面的的template跟上方變數名稱要相同
//string.Format(想呈現的字串內容,{0},{1},{2})
string message = string.Format(template, name, age, birthday);
string message4 = string.Format(template4, name, age, birthday);
Console.WriteLine(message);
Console.WriteLine(message4);
針對裡面創建字串模板跟占位符的部分來去解釋。
string template = "Hi, {0} ,您的年紀是{1}, 生日是{2}";
:創建一個字串模板 template ,其中包含三個占位符 {0} 、 {1} 和 {2},分別用來表示名字、年齡和生日。string template4 = "Hi , 生日是{2}, {0} ,您的年紀是{1}";
:創建另一個字串模板 template4,這次占位符的順序不同,但仍然表示相同的變數。string message = string.Format(template, name, age, birthday);
:使用 string.Format 方法將 template 中的占位符替換為實際的變數值,並將結果存儲在 message 變數中。string message4 = string.Format(template4, name, age, birthday);
:使用相同的方式,將 template4 中的占位符替換為變數值,並將結果存儲在 message4 變數中。布林(Boolean)是一種基本的數據型別,它代表了兩種可能的值:真(true)和假(false)。
布林型別通常用於表示條件或邏輯值,如開關、條件測試的結果等。布林數據型別在程式中用於控制流程和做決策,因此它在程式設計中非常重要。
例子:
以下是一個簡單的例子,演示了如何使用布林型別和條件語句:
bool isRaining = true;
bool isSunny = false;
if (isRaining)
{
Console.WriteLine("今天下雨了。");
}
else if (isSunny)
{
Console.WriteLine("今天天晴。");
}
else
{
Console.WriteLine("今天的天氣我不知道。");
}
在這個例子中,我們創建了兩個布林變數 isRaining
和 isSunny
,分別表示是否下雨和是否晴天。然後,我們使用 if
和 else if
條件語句來檢查這些變數的值。根據變數的值,程式將輸出相對應的訊息。
在這個情況下,因為 isRaining
的值為 true
,所以程式將輸出 "今天下雨了。"。這個例子顯示了布林型別的用法,它用於控制程式的流程和執行不同的程式碼路徑,具有決策能力。
上面關於提到的控制程式的流程,就像當你寫程式的時候,有時候你想要讓電腦做一些決定。
舉例像小朋友們在玩遊戲時需要根據不同的情況做不同的事情一樣。那麼,if...else
就像是告訴電腦如何做這些決定的工具。
想像一個遊戲,你有一個大盒子裡面有很多糖果,而你的小朋友想要拿糖果。你可以告訴他們:
if
部分,如果某個條件成立,就執行這個情況)else
部分,如果前面的條件不成立,就執行這個情況)所以,if...else
就是告訴電腦根據情況做出不同的決定。如果某件事情是對的,就做一件事;如果不對,就做另一件事。這就是程式中的決策能力,就像小朋友們在玩遊戲時必須做出選擇一樣。
關於if判斷式跟三元運算式就在明天的時候繼續說明啦~
第三天結束~準備的時間都比去年前端的時間還來的長,還要去思考該如何正確描述~
希望整理的內容還算有解釋到充足的C# 基礎知識,也歡迎給予指教~~