如何在 c# 中将字符串数据存储到字符串数组
本文关键字:字符串 数据 存储 数组 | 更新日期: 2023-09-27 17:56:56
另一个我似乎无法解决的愚蠢的家庭作业问题。我正在尝试将用户输入字符串数据存储到字符串数组中,但我收到一个错误"无法隐式将类型"字符串"转换为类型"int",尽管事实上我的代码(据我所知)没有任何内容表明它需要是一个 int 类型。我在方括号之间的最后一行收到错误:玩家名称 [玩家名称] = 玩家名称;
编辑:我知道我的变量和语句搞砸了,一旦我弄清楚数组问题发生了什么,我就会解决这个问题。
static void InputData(string [] playerNames, int [] playerScore, ref int numPlayers)
{
int numberPlayers = 0;
if (!numberPlayers.Equals("Q"))
for (numPlayers++; numPlayers < 100;)
Console.WriteLine("Enter the name of the player...Enter '"Q to exit...");
string playerName = Console.ReadLine();
playerNames [playerName] = playerName;
编辑:这是我这部分的解析代码 static void InputData(string [] playerNames, int [] playerScores, ref int numPlayers) { 字符串播放器名称;
for (int i = 0; i != numPlayers; i++)
{
Console.WriteLine("Enter the name of the player...Enter '"Q to exit...");
playerName = Console.ReadLine();
if (!playerName.Equals("Q"))
Console.WriteLine("No further user input needed...'n");
else
playerNames[i] = playerName;
Console.WriteLine("Enter the score of the player...");
int playerScore = Convert.ToInt32(Console.ReadLine());
playerScores[i] = playerScore;
我的下一个问题是,下面的用户建议数组存储整数。我必须存储多达 100 个玩家姓名和 100 个玩家分数。你们有什么建议?
不正确的:
playerNames [playerName] = playerName
因为 playerName 是一个字符串,不能用作数组的索引。
你的意思是:
playerNames [numPlayers] = playerName
当 numberPlayer 是对int
的引用时,这不起作用:
!numberPlayers.Equals("Q")
。因为"Q"不是int
.
错误在此行中
playerNames[playerName] =playerName.
PlayerNames 是一个字符串类型数组,要访问该数组的元素,您必须提供一个整数值,并且您正在提供一个字符串值。
playerNames[int type value here] =playerName
基本的for
循环应如下所示:
for (int i = 0 ; i != numPlayers ; i++) {
Console.WriteLine("Enter the name of the player...Enter '"Q to exit...");
string playerName = Console.ReadLine();
playerNames [i] = playerName;
... // The rest of your loop goes here
}
这假设玩家数量固定。如果要使其可扩展,请为名称创建一个List<string>
,为分数创建一个List<int>
。更好的是,将名字和分数组合在一个班级中。
函数的签名假定两个数组将被扩展。虽然这在 .NET 中是可能的,但它并不是例行公事。
以下是我在不为播放器引入新类的情况下更改您的函数的方法:
static void InputData(List<string> playerNames, List<int> playerScore) {
// The caller is assumed to have assigned non-null lists to the two arguments
int i = 0;
while (true) {
Console.WriteLine("Enter the name of the player...Enter '"Q to exit...");
string playerName = Console.ReadLine();
if (playerName == "Q" || playerName == "q") break;
playerNames.Add(playerName);
... // The rest of your loop goes here
}
}
如果预先分配包含 100 个项目的数组,请按如下所示更改代码:
numPlayers = 0;
while (numPlayers = 0 ; numPlayers < 100 ; numPlayers++) {
Console.WriteLine("Enter the name of the player...Enter '"Q to exit...");
string playerName = Console.ReadLine();
playerNames[numPlayers] = playerName;
... // The rest of your loop goes here
}