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


今天寫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(',')


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM