C#之擷取控制台輸入的數字

來源:互聯網
上載者:User

今天寫K均值演算法的時候,需要將控制台輸入的初始化簇中心點讀入(就是一些數字),讀入的方式是一行讀入,以空格隔開,斷行符號結束。例如:“1_2_3...”

C#中控制台讀入的方法也不多,常見的有:

1)Console.Read() 方法讀取單個字元,擷取的是使用者輸入的任何值的ASCII值;例如輸入的是‘1’,得到的是“49”。該方法是讀入一行處理一次。

2)Console.ReadLine()方法讀取一行字串,擷取的是輸入的一行的整個字串;該方法是讀入一行處理一次。

3)Console.ReadKey()方法讀入的是一個按索引值,一次讀入一個字元。例如:讓使用者輸入Y或者N的時候可以用。實際上這個方法在實際應用中並不用來讀入資料,它有另一個功能就是可以使當前程式等待鍵盤輸入,以便退出程式。使調試時能看到輸出結果。如果沒有此句,命令視窗會一閃而過。(相信初學的會遇到這個問題,作用跟C中的getch()函數一樣。)

那麼怎麼實現我的輸入要求呢,我用的是Console.ReadLine()和split()兩個方法組合實現的。當然還有更好的方法,等待讀者去發現。具體代碼如下:

Console.Write("\n輸入K個初始簇中心點的序號(序號一行輸入,以空格隔開,斷行符號結束!)\n");            string str = Console.ReadLine();//從控制台讀入輸入            string[] nums = str.Split(new string[]{ " " }, StringSplitOptions.None);//這裡是以空格隔開            int index=0;            while(index<nums.Count<string>())            {                int num=Convert.ToInt32(num[index]);  //獲得數字                                index++;            }

同時簡單介紹一下split()這個方法:(該部分內容轉自:http://www.cnblogs.com/yugen/archive/2010/08/18/1802781.html)

1、用字串分隔: 
using System.Text.RegularExpressions;
string str="aaajsbbbjsccc";
string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);
foreach (string i in sArray) Response.Write(i.ToString() + "<br>");
輸出結果:
aaa
bbb
ccc
2、用多個字元來分隔:
string str="aaajbbbscccjdddseee"; string[] sArray=str.Split(new char[2] {'j','s'}); 
foreach(string i in sArray) Response.Write(i.ToString() + "<br>"); 
輸出結果:
aaa
bbb
ccc
ddd
eee
3、用單個字元來分隔:
string str="aaajbbbjccc";
string[] sArray=str.Split('j');
foreach(string i in sArray) Response.Write(i.ToString() + "<br>");
輸出結果:
aaa
bbb
ccc

 

 ////////////////////////////////////////////////string[] arr = str.Split("o");

這是一個具有語法錯誤的語句,Split 的 separator 參數應該是 char[] 或 string[],不應是字串。正確的樣本:

string str = "technology";
char[] separator = { 'o' };
string[] arr = str.Split(separator);////////////////////////////////////////////////////String.Split 方法有6個重載函數:程式碼 1) public string[] Split(params char[] separator)2) public string[] Split(char[] separator, int count)
3) public string[] Split(char[] separator, StringSplitOptions options)
4) public string[] Split(string[] separator, StringSplitOptions options)
5) public string[] Split(char[] separator, int count, StringSplitOptions options)
6) public string[] Split(string[] separator, int count, StringSplitOptions options) 下邊我們通過一些執行個體來說明下怎麼使用(以下string words = "1,2.3,,4";):
1. public string[] Split(params char[] separator)程式碼 string[] split = words.Split(new Char[] { ',' });//返回:{"1","2.3","","4"}
string[] split = words.Split(new Char[] { ',', '.' });//返回:{"1","2","3","","4"}
2. public string[] Split(char[] separator, int count)ITPUB個人空間,n:H!C0M/S3U\u0002P程式碼 string[] split = words.Split(new Char[] { ',', '.' }, 2);//返回:{"1","2.3,,4"}
string[] split = words.Split(new Char[] { ',', '.' }, 6);//返回:{"1","2","3","","4"}
3. public string[] Split(char[] separator, StringSplitOptions options)程式碼 string[] split = words.Split(new Char[] { ',', '.' }, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2","3","4"} 不保留空元素
string[] split = words.Split(new Char[] { ',', '.' }, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
4. public string[] Split(string[] separator, StringSplitOptions options)程式碼 string[] split = words.Split(new string[] { ",", "." }, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2","3","4"} 不保留空元素
\u0002w1I+Ch%^\u0017}0string[] split = words.Split(new string[] { ",", "." }, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
5. public string[] Split(char[] separator, int count, StringSplitOptions options)程式碼 string[] split = words.Split(new Char[] { ',', '.' }, 2, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2.3,,4"} 不保留空元素ITPUB個人空間1K;e\u0007f\u0008f }\u0011C n
string[] split = words.Split(new Char[] { ',', '.' }, 6, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
6. public string[] Split(string[] separator, int count, StringSplitOptions options)程式碼 string[] split = words.Split(new string[] { ",", "." }, 2, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2.3,,4"} 不保留空元素
string[] split = words.Split(new string[] { ",", "." }, 6, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素 需要注意的是沒有重載函數public string[] Split(string[] separator),所以我們不能像VB.NET那樣使用words.Split(","),而只能使用words.Split(',')1、用字串分隔: 
using System.Text.RegularExpressions;
string str="aaajsbbbjsccc";
string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);
foreach (string i in sArray) Response.Write(i.ToString() + "<br>");
輸出結果:
aaa
bbb
ccc
2、用多個字元來分隔:
string str="aaajbbbscccjdddseee"; string[] sArray=str.Split(new char[2] {'j','s'}); 
foreach(string i in sArray) Response.Write(i.ToString() + "<br>"); 
輸出結果:
aaa
bbb
ccc
ddd
eee
3、用單個字元來分隔:
string str="aaajbbbjccc";
string[] sArray=str.Split('j');
foreach(string i in sArray) Response.Write(i.ToString() + "<br>");
輸出結果:
aaa
bbb
ccc

 

 ////////////////////////////////////////////////string[] arr = str.Split("o");

這是一個具有語法錯誤的語句,Split 的 separator 參數應該是 char[] 或 string[],不應是字串。正確的樣本:

string str = "technology";
char[] separator = { 'o' };
string[] arr = str.Split(separator);////////////////////////////////////////////////////String.Split 方法有6個重載函數:程式碼 1) public string[] Split(params char[] separator)2) public string[] Split(char[] separator, int count)
3) public string[] Split(char[] separator, StringSplitOptions options)
4) public string[] Split(string[] separator, StringSplitOptions options)
5) public string[] Split(char[] separator, int count, StringSplitOptions options)
6) public string[] Split(string[] separator, int count, StringSplitOptions options) 下邊我們通過一些執行個體來說明下怎麼使用(以下string words = "1,2.3,,4";):
1. public string[] Split(params char[] separator)程式碼 string[] split = words.Split(new Char[] { ',' });//返回:{"1","2.3","","4"}
string[] split = words.Split(new Char[] { ',', '.' });//返回:{"1","2","3","","4"}
2. public string[] Split(char[] separator, int count)ITPUB個人空間,n:H!C0M/S3U\u0002P程式碼 string[] split = words.Split(new Char[] { ',', '.' }, 2);//返回:{"1","2.3,,4"}
string[] split = words.Split(new Char[] { ',', '.' }, 6);//返回:{"1","2","3","","4"}
3. public string[] Split(char[] separator, StringSplitOptions options)程式碼 string[] split = words.Split(new Char[] { ',', '.' }, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2","3","4"} 不保留空元素
string[] split = words.Split(new Char[] { ',', '.' }, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
4. public string[] Split(string[] separator, StringSplitOptions options)程式碼 string[] split = words.Split(new string[] { ",", "." }, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2","3","4"} 不保留空元素
\u0002w1I+Ch%^\u0017}0string[] split = words.Split(new string[] { ",", "." }, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
5. public string[] Split(char[] separator, int count, StringSplitOptions options)程式碼 string[] split = words.Split(new Char[] { ',', '.' }, 2, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2.3,,4"} 不保留空元素ITPUB個人空間1K;e\u0007f\u0008f }\u0011C n
string[] split = words.Split(new Char[] { ',', '.' }, 6, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
6. public string[] Split(string[] separator, int count, StringSplitOptions options)程式碼 string[] split = words.Split(new string[] { ",", "." }, 2, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2.3,,4"} 不保留空元素
string[] split = words.Split(new string[] { ",", "." }, 6, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素 需要注意的是沒有重載函數public string[] Split(string[] separator),所以我們不能像VB.NET那樣使用words.Split(","),而只能使用words.Split(',')

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.