C# 控制臺(tái)實(shí)現(xiàn)一次性輸入多行的操作
推薦使用第二種方法。
1、使用StringBuilder存儲(chǔ):按下q鍵時(shí)退出
StringBuilder sb = new StringBuilder();
while (true)
{
string input = Console.ReadLine();
if (input.Equals("q") == false) //如果輸入的不是q(區(qū)分大小寫),則增加記錄
sb.AppendLine(input);
else
break; //如果該行僅僅輸入q,則結(jié)束輸入
}
Console.WriteLine("按輸入方式輸出(不會(huì)有最后的退出符號(hào)q,而是一個(gè)空行):");
Console.WriteLine(sb.ToString());
Console.WriteLine("輸入數(shù)據(jù)的長度:"); //回車占據(jù)兩個(gè)字符
Console.WriteLine(sb.Length); //結(jié)果說明數(shù)據(jù)是以字符形式存入StringBuilder中,回車為2個(gè)字符
Console.WriteLine("逐個(gè)輸出(不會(huì)有最后的退出q符號(hào),而是一個(gè)空行):");
for (int i = 0; i < sb.Length; i++)
{
Console.WriteLine(sb[i]); //為char類型
}
//依次輸出每一行和每個(gè)值
List<string> line = new List<string>();
int k = 0;
for (int i = 0; i < sb.Length - 1; i = i + 2) //當(dāng)i為\r時(shí),i+1是\n,下一次的循環(huán)是i+2開始
{
string a = "";
while (sb[i].ToString() + sb[i + 1].ToString() != "\r\n") //判斷當(dāng)前字符和下一個(gè)字符是不是回車符\r\n
{
a = a + sb[i++].ToString(); //每行為一個(gè)字符串
}
line.Insert(k++, a); //將字符串依次存入鏈表
}
Console.WriteLine("依次輸出每行");
for (int i = 0; i < line.Count; i++)
{
Console.WriteLine(line[i]);
}
Console.WriteLine("依次輸出每個(gè)值");
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中,回車占兩個(gè)char值。

2、使用鏈表List存儲(chǔ):按下q時(shí)退出
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); //結(jié)果說明數(shù)據(jù)是按行存在鏈表中的,每行占鏈表一個(gè)值
Console.WriteLine("依次輸出鏈表中數(shù)據(jù)");
for (int i = 0; i < len; i++)
{
Console.WriteLine(str[i]); //依次輸出鏈表每個(gè)值,也是依次輸出每行
}
Console.WriteLine("依次輸出每個(gè)值");
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();

從上面兩個(gè)方法來看,第二個(gè)方法更方便對輸入數(shù)據(jù)取出操作。
補(bǔ)充:C語言一次性給多個(gè)變量賦值
我就廢話不多說了,大家還是直接看代碼吧~
scanf("%d%d%d",a,b,c);
而不是
scanf("%d,%d,%d",a,b,c);
這里要注意那里是沒有逗號(hào)的
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
C#實(shí)現(xiàn)將TextBox綁定為KindEditor富文本
KindEditor?依靠出色的用戶體驗(yàn)和領(lǐng)先的技術(shù)提供富文本編輯功能,是一款非常受歡迎的HTML在線編輯器,下面我們就來看看C#如何將TextBox綁定為KindEditor富文本吧2024-04-04
C#實(shí)現(xiàn)身份證實(shí)名認(rèn)證接口的示例代碼
身份證實(shí)名認(rèn)證,即通過姓名和身份證號(hào)校驗(yàn)個(gè)人信息的匹配程度,廣泛應(yīng)用于金融、互聯(lián)網(wǎng)等多個(gè)領(lǐng)域,本文主要介紹了C#實(shí)現(xiàn)身份證實(shí)名認(rèn)證接口的示例代碼,感興趣的可以了解一下2024-09-09
C# 中類型轉(zhuǎn)換方式之顯式轉(zhuǎn)換和 as 運(yùn)算符
在 C# 中,有兩種常見的類型轉(zhuǎn)換方式:顯式轉(zhuǎn)換和as 運(yùn)算符,它們用于在不同類型之間進(jìn)行轉(zhuǎn)換,以下是對這兩種轉(zhuǎn)換方式的詳細(xì)解釋和示例說明,感興趣的朋友跟隨小編一起看看吧2024-05-05
Unity?UGUI的StandaloneInputModule標(biāo)準(zhǔn)輸入模塊組件使用示例
這篇文章主要為大家介紹了Unity?UGUI的StandaloneInputModule標(biāo)準(zhǔn)輸入模塊組件使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08

