C#。 Console.ReadLine() 用于两个不同的对象
C#. Console.ReadLine() for two different obejcts
我正在学习 C#,对这个主题还很陌生。目前,我正在开发一个小型控制台应用程序(只是做一些任务来加强我的知识)战舰游戏。我想指定两个名字:Player 1 和 Player 2.
问题是:我可以使用一个 reader 而不是两个来分配不同的名称吗?我尝试使用一个 reader,但它为两个玩家分配了一个名字。
这是我的代码:
public void StartGame(Game game)
{
if (game.GameStage == GameStage.Start)
{
Console.WriteLine("Welcome to Battleship 2020.");
Console.WriteLine("Player 1 enter your name:");
var reader1 = Console.ReadLine();
Player player1 = new Player();
player1.Name = reader1;
Console.WriteLine($"Welcome {player1.Name}");
Console.WriteLine("Player 2 enter your name:");
Player player2 = new Player();
var reader2 = Console.ReadLine();
player2.Name = reader2;
Console.WriteLine($"Welcome {player2.Name}");
}
}
如果你想一次读取两个玩家名字,(你可以先提示用户)并告诉他们输入玩家名字逗号或 space 分隔,然后在读取玩家名字后自己将它们分开
var reader = Console.ReadLine();
var playerNames = reader.Split(' '); // payerNames[0], playerNames[1] contains player names
如果您的意思只是重用 reader
变量。您可以随时使用它,但第一次需要声明它。
var reader = Console.ReadLine();
...
reader = Console.ReadLine();
...
reader = Console.ReadLine();
你可以像这样把它放在一个循环中:
for(int i = 0; i < 2; i++)
{
var reader = Console.ReadLine();
...
}
如果要确保没有输入空值,可以使用do...while
并循环直到设置有效值。 (重试空值或无效值):
for(int i = 0; i < 2; i++)
{
do
{
player[i] = Console.ReadLine();
} while(player[i].Trim() != "");
}
Console.ReadLine()
没有 return 任何“reader”。它只是 returns String
对象,其中包含从控制台输入中获取的文本。
方法名称中的 line
表示它将读取输入中可用的所有内容,直到遇到换行符。
如果没有换行符,它将永远等待,直到用户按下“enter”键。
如果缓冲区中有很多文本行,则需要多次调用ReadLine()
。
您可以直接指定玩家名称:
player1.Name = Console.ReadLine();
我正在学习 C#,对这个主题还很陌生。目前,我正在开发一个小型控制台应用程序(只是做一些任务来加强我的知识)战舰游戏。我想指定两个名字:Player 1 和 Player 2.
问题是:我可以使用一个 reader 而不是两个来分配不同的名称吗?我尝试使用一个 reader,但它为两个玩家分配了一个名字。
这是我的代码:
public void StartGame(Game game)
{
if (game.GameStage == GameStage.Start)
{
Console.WriteLine("Welcome to Battleship 2020.");
Console.WriteLine("Player 1 enter your name:");
var reader1 = Console.ReadLine();
Player player1 = new Player();
player1.Name = reader1;
Console.WriteLine($"Welcome {player1.Name}");
Console.WriteLine("Player 2 enter your name:");
Player player2 = new Player();
var reader2 = Console.ReadLine();
player2.Name = reader2;
Console.WriteLine($"Welcome {player2.Name}");
}
}
如果你想一次读取两个玩家名字,(你可以先提示用户)并告诉他们输入玩家名字逗号或 space 分隔,然后在读取玩家名字后自己将它们分开
var reader = Console.ReadLine();
var playerNames = reader.Split(' '); // payerNames[0], playerNames[1] contains player names
如果您的意思只是重用 reader
变量。您可以随时使用它,但第一次需要声明它。
var reader = Console.ReadLine();
...
reader = Console.ReadLine();
...
reader = Console.ReadLine();
你可以像这样把它放在一个循环中:
for(int i = 0; i < 2; i++)
{
var reader = Console.ReadLine();
...
}
如果要确保没有输入空值,可以使用do...while
并循环直到设置有效值。 (重试空值或无效值):
for(int i = 0; i < 2; i++)
{
do
{
player[i] = Console.ReadLine();
} while(player[i].Trim() != "");
}
Console.ReadLine()
没有 return 任何“reader”。它只是 returns String
对象,其中包含从控制台输入中获取的文本。
方法名称中的 line
表示它将读取输入中可用的所有内容,直到遇到换行符。
如果没有换行符,它将永远等待,直到用户按下“enter”键。
如果缓冲区中有很多文本行,则需要多次调用ReadLine()
。
您可以直接指定玩家名称:
player1.Name = Console.ReadLine();