所以我的代码遇到了一些麻烦。对于初学者,我有这个问题,输出所有的数组。请注意,我只编写了12天的时间,由于我的大学学习前景,我的老师在C#编码方面略微跳过了基础知识。我刚刚得知它没有按字母顺序排序......
static int inputPartInformation(string[] pl)
{
int i = 0;
do
{
Console.Write("Enter a Name: ");
//for the player
pl[i] = Console.ReadLine();
}
while (pl[i++].CompareTo("Q") != 0);
//if they write Q for the player it will quit
return i - 1;
}
static void Main(string[] args)
{
String[] players = new String[100];
Array.Sort(players);
// Sort array.
//defines players in this new instance
var count = inputPartInformation(players);
//for the portion of the code that handles the input
//calculates the average score
Console.WriteLine("List of People in Order: {0}, {1}, {2}, {3}, {4}, {5}, {6},", players);
Console.ReadLine();
}
}
}
答案 0 :(得分:3)
{0}, {1},{2}
打印单个项目,依此类推;它不会起作用,即使它确实会将你的输出限制在前七项void inputPartInformation(string[] pl)
以返回count
(i-1
),然后使用Array.Sort(players, 0, count);
将多个字符串转换为单个字符串的最简单方法是使用string.Join
:
Console.WriteLine("List of People in Order: {0}", string.Join(", ", players.Take(count)));
答案 1 :(得分:1)
首先,“Q”正被添加到输入列表中,因为在 之后接受输入并将其插入到数组中时,不会测试“Q”。重新设计这种方法的一种方法是将输入名称保存到临时变量中,测试 为“Q”,并且只有在其他情况下才将其添加到数组中。在循环中,将输入/测试修改为:
bool enteringNames=true;
do{
String nextName = Console.ReadLine();
if (nextName.CompareTo("Q")==0)
{
enteringNames=false;
}
else
{
p[i]=nextName;
}
i++;
}
while(enteringNames);
这只是完成工作的一种方式。请记住,固定的100条目数组并不是最强大的方法...永远不知道可能有多少名字!
现在,最后一个WriteLine有点奇怪,但我认为你可以自己解决这个问题 - 它非常简单地遍历数组,或只是将所有字符串连接在一起:)
其次,你的排序不起作用,因为你在调用inputPartInformation(播放器)实际加载数据之前调用了Array.Sort(播放器),所以你在没有任何数据的情况下进行排序!调用inputPartInformation后移动Array.Sort调用。
希望这有帮助!
答案 2 :(得分:1)
试试这个,它会起作用,但首先尝试研究API
static int inputPartInformation(string[] pl)
{
int i = 0;
String temp;
while (true)
{
Console.Write("Enter a Name: ");
temp=Console.ReadLine();
if (temp=="Q")
break;
else pl[i++] = temp;
}
return i;
}
static void Main(string[] args)
{
String[] players = new String[100];
int size=inputPartInformation(players);
for (int i = 0; i <= size; i++)
Console.WriteLine(players[i]);
}
}
答案 3 :(得分:0)
Q出现在您的结果中,因为您要将其分配给您的数组。
重写函数以在分配之前检查值,例如
static void inputPartInformation(string[] pl)
{
int i = 0;
do
{
Console.Write("Enter a Name: ");
//for the player
newStrInput = Console.ReadLine();
if (newStrInput == "Q")
break;//if they write Q for the player it will quit
pl[i]=newStrInput;
i++;
}
while (i>-1);//infinite loop
}