C# 控制臺實現(xiàn)一次性輸入多行的操作
更新時間:2021年01月19日 11:07:09 作者:路人甲JIA
這篇文章主要介紹了C# 控制臺實現(xiàn)一次性輸入多行的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
推薦使用第二種方法。
1、使用StringBuilder存儲:按下q鍵時退出
StringBuilder sb = new StringBuilder(); while (true) { string input = Console.ReadLine(); if (input.Equals("q") == false) //如果輸入的不是q(區(qū)分大小寫),則增加記錄 sb.AppendLine(input); else break; //如果該行僅僅輸入q,則結束輸入 } Console.WriteLine("按輸入方式輸出(不會有最后的退出符號q,而是一個空行):"); Console.WriteLine(sb.ToString()); Console.WriteLine("輸入數(shù)據(jù)的長度:"); //回車占據(jù)兩個字符 Console.WriteLine(sb.Length); //結果說明數(shù)據(jù)是以字符形式存入StringBuilder中,回車為2個字符 Console.WriteLine("逐個輸出(不會有最后的退出q符號,而是一個空行):"); for (int i = 0; i < sb.Length; i++) { Console.WriteLine(sb[i]); //為char類型 } //依次輸出每一行和每個值 List<string> line = new List<string>(); int k = 0; for (int i = 0; i < sb.Length - 1; i = i + 2) //當i為\r時,i+1是\n,下一次的循環(huán)是i+2開始 { string a = ""; while (sb[i].ToString() + sb[i + 1].ToString() != "\r\n") //判斷當前字符和下一個字符是不是回車符\r\n { a = a + sb[i++].ToString(); //每行為一個字符串 } line.Insert(k++, a); //將字符串依次存入鏈表 } Console.WriteLine("依次輸出每行"); for (int i = 0; i < line.Count; i++) { Console.WriteLine(line[i]); } Console.WriteLine("依次輸出每個值"); string[][] str = new string[line.Count][]; //交叉數(shù)組,行固定,為上面得到的行數(shù),每一行的長度不定(每行字符間以空格或其他分割) for (int i = 0; i < line.Count; i++) { str[i] = line[i].Split(); //C#對空格的分割方式之一,如果是其他分割方式,就需要也使用上面的鏈表分割每行的方式了 } for (int i = 0; i < line.Count; i++) { for (int j = 0; j < str[i].Length; j++) { Console.WriteLine(str[i][j]); } } Console.ReadKey();
注意,輸入值后它是以char存在于StringBuilder中,回車占兩個char值。
2、使用鏈表List存儲:按下q時退出
List<string> str = new List<string>(); int len = 0; while (true) { string input = Console.ReadLine(); if (input.Equals("q") == false) //如果輸入的不是q(區(qū)分大小寫),則增加記錄 str.Insert(len++, input); else break; } Console.WriteLine("輸出數(shù)據(jù)長度"); Console.WriteLine(len); //結果說明數(shù)據(jù)是按行存在鏈表中的,每行占鏈表一個值 Console.WriteLine("依次輸出鏈表中數(shù)據(jù)"); for (int i = 0; i < len; i++) { Console.WriteLine(str[i]); //依次輸出鏈表每個值,也是依次輸出每行 } Console.WriteLine("依次輸出每個值"); string[][] every = new string[len][]; //交叉數(shù)組,行固定,為上面得到的行數(shù),每一行的長度不定(每行字符間以空格或其他分割) for (int i = 0; i < len; i++) { every[i] = str[i].Split(); //C#對空格的分割方式之一,如果是其他分割方式,就需要也使用上面的鏈表分割每行的方式了 } for (int i = 0; i < len; i++) { for (int j = 0; j < every[i].Length; j++) { Console.WriteLine(every[i][j]); } } Console.ReadKey();
從上面兩個方法來看,第二個方法更方便對輸入數(shù)據(jù)取出操作。
補充:C語言一次性給多個變量賦值
我就廢話不多說了,大家還是直接看代碼吧~
scanf("%d%d%d",a,b,c);
而不是
scanf("%d,%d,%d",a,b,c);
這里要注意那里是沒有逗號的
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章
使用C#實現(xiàn)Windows組和用戶管理的示例代碼
這篇文章主要介紹了使用C#實現(xiàn)Windows組和用戶管理的示例代碼,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下2021-01-01C#實現(xiàn)TreeView節(jié)點拖拽的方法
這篇文章主要介紹了C#實現(xiàn)TreeView節(jié)點拖拽的方法,涉及C#針對TreeView節(jié)點的動態(tài)添加及移除技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-09-09