iT邦幫忙

2023 iThome 鐵人賽

DAY 2
0

大家早安~~~今天來進行行前特訓啦

首先不知道大家記不記得如何input跟output?
那我來簡單帶過~

我怕各位也忘記如何開啟專案了,來簡單說說

打開 Visual Studio 2022
選擇建立新的專案

新增專案

接下來選擇主控台應用程式,要注意圖標右上角要顯示C#,不要開到VB去喔

選擇版本

再來這邊應該不用特別講吧,要注意的是,專案名稱不能用中文(我記得是這樣)
我們名稱就打上 project 吧,路徑放在自己容易找到的地方

專案設定

好了就按下一步
架構這裡勾選不要使用最上層語句(其實不勾也沒關係,就只是會有點不一樣)
然後直接建立

其他設定

進來後會長這樣

專案開啟

應該不用過多介紹UI吧?
簡單來說,左邊是我們打code的地方,右上是專案總管,專案資料夾的東西都會在這裡,左下現在用不到
然後如果剛剛沒有勾選不要使用最上層語句的話,這裡面只會有一句

Console.WriteLine("Hello, World!");

正常來說會顯示

using System;
namespace project
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
        }
    }
}

好~看到這邊應該看到關鍵了吧?

輸出就是Console.WriteLine(),那輸入呢?

輸入的話一樣有Read跟ReadLine

Console類別的方法 說明
Write 將輸出串流(Output Stream)由指定的輸出裝置(預設是螢幕)顯示出來。
WriteLine 將輸出串流(Output Stream)及換行控制字元(Carriage return)由指定的輸出裝置(預設是螢幕)顯示出來。
Read 由指定輸入裝置(預設是鍵盤)將鍵入的一個字元讀進來形成一個輸入串流(Input Stream)並放入指定的變數。
ReadLine 由指定輸入裝置(預設是鍵盤)將鍵入的一行字串讀進來形成一個輸入串流(Input Stream)並放入指定的變數。也就是ReadLine()方法允許接受一連串的輸入串流(一行字元)直到按下Enter。

那既然都談到輸入輸出了,那我們來說說格式化輸出

讓我們看看吧!

字元 功能
C或c 以貨幣方式顯示資料,以$開頭
Dn或dn 以指定n位數顯示十進位資料,空白處補0
E或e 以指數方式顯示資料
Fn或fn 以小數有n位來顯示資料
G或g 以一般格式顯示
N或n 使用千位符號但不包含$符號,若為N1表保留小數至第一位,若為N或N2都保留小數至第二位
X或x 資料以16進制顯示

範例:

            int num1 = 123456, num2 = -123456;
            double num3 = 987.654, num4 = -987.654;
            Console.WriteLine("num1=" + num1 + " num2=" + num2 + " num3=" + num3 + " num4=" + num4);
            Console.WriteLine("num3 num4的C/c3格式:");
            Console.WriteLine("num3= {0:C} num4={1:c3}", num3, num4);
            Console.WriteLine("num1 num2的D9/d3/D格式:");
            Console.WriteLine("num1= {0:D9} num2={1:d3} num2={2:D}", num1, num2, num2);
            Console.WriteLine("num3 num4的E/e2格式:");
            Console.WriteLine("num3= {0:E} num4={1:e3}", num3, num4);
            Console.WriteLine("num3 num4的F1/f格式:");
            Console.WriteLine("num3= {0:F1} num4={1:f}", num3, num4);
            Console.WriteLine("num3 num4的G3/g/G/g4格式:");
            Console.WriteLine("num3= {0:G3} num4={1:g} num3= {0:G} num4={1:g4}", num3, num4);
            Console.WriteLine("num1 num2的N3/n格式:");
            Console.WriteLine("num1= {0:N3} num2={1:n}", num1, num2);
            Console.WriteLine("num1 num2的X格式:");
            Console.WriteLine("num1= {0:X} num2={1:x}", num1, num2);

格式化輸出

但...各位勇者是不是發現
我剛剛的示範好像跟上面說的不一樣啊!
等等喔~因為還有一個叫做自訂數值格式輸出字串

格式字元 功能
0:零值預留位置 若顯示數值的位數比設定格式的位數小,資料向右靠齊顯示,未用到的位數以0取代。若數值資料比設定格式位數大,則以該數值大小直接顯示。
#:數字預留位置 若顯示數值的位數比設定格式的位數小,資料向右靠齊顯示,未用到的位數以空白取代。若數值資料比設定格式位數大,則以該數值大小直接顯示。
.:小數點 由小數點右邊的位數來決定小數的位數,若資料的小數位數超過設定的小數位數,會做四捨五入。小數前後可使用#或0格式字元。
,:千位分隔符號和數值縮放 使用千位分隔符號,若千位分隔符號放一個在最後面,該數值會除以1000顯示,連續兩個千位分隔字元除以1000000,以此類推。
%:百分比預留位置 使用%格式字元會將數值除以100顯示。
E:科學標記法 使用科學記號會以指數方式顯示。
\:溢出字元 使用溢出字元,接在溢出字元後面的字元會被當作指定的特殊意義來處理。
'ABC'|"ABC":常值字串 使用單/雙引號,會將括住的字串複製到輸出字串內直接顯示出來。

範例:

            double m1 = 0912345678, m3 = -2.455, m4 = 100000000, m5 = 0.075, m6 = 0.512458;
            int m2 = -12345;
            Console.WriteLine("1. " + m1.ToString("(0#) ########"));
            Console.WriteLine("2. " + m2.ToString("######"));
            Console.WriteLine("3. " + m2.ToString("000000"));
            Console.WriteLine("4. " + m3.ToString("#.##"));
            Console.WriteLine("5. " + m3.ToString("0.00000"));
            Console.WriteLine("6. " + m3.ToString("00.00"));
            Console.WriteLine("7. " + m4.ToString("#,#"));
            Console.WriteLine("8. " + m4.ToString("#,") + "k");
            Console.WriteLine("9. " + m4.ToString("#,,") + "M");
            Console.WriteLine("10. " + m4.ToString("#,#,") + "k");
            Console.WriteLine("11. " + m5.ToString("#0.##%"));
            Console.WriteLine("12. " + m5.ToString("#0.##%"));
            Console.WriteLine("13. " + m4.ToString("#0.##E+0"));
            Console.WriteLine("14. " + m1.ToString("[0###-###-###]"));

自訂格式化輸出

再來最後,如果我們要插入'、"、\等等字元的話,該怎麼辦呢?

溢出序列字元 說明
\' 插入一個單引號。
\" 插入一個雙引號。
\\ 插入一個倒斜線,當程式定義檔案路徑時有用。
\a 觸發一個系統的警告聲。
\b 退一格。
\n 換一行。
\r 游標移到目前該行最前面。
\t 插入水平跳格到字串中。
\udddd 插入一個Unicode字元。
\v 插入垂直跳格到字串中。
\0 代表一個空字元。

簡單示範一下:

            string str1 = "勇者說:\"嗨!C#世界\"";
            Console.Write("\t" + str1);
            Console.WriteLine("\t" + "美好世界我來了!");
            Console.Write("\n我是OOXX\n");
            Console.WriteLine("D:\\VS 2022");
            Console.WriteLine(@"D:\VS 2022");

溢出序列字元

好!今天就先這樣吧!
休息喽~~~

tags: 2023鐵人賽

上一篇
2023鐵人賽 Day 01 C#世界深入探險前準備!
下一篇
2023鐵人賽 Day 03 C#深入行前訓練-2
系列文
C#世界深入探險,走走不同副本之路-Windows Form30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言