首页 > 解决方案 > 我试图在字符串和重复指令的帮助下解决的问题,但在控制台上结果不是我所期望的

问题描述

using System;

class Program
{
    static void Main(string[] args)
    {
        string candidateName = Console.ReadLine();
        string input = Console.ReadLine();

        int numberOfAdmittedPersons = Convert.ToInt32(input);

        string result = string.Empty;

        for (int i = 1; i <= numberOfAdmittedPersons; i++)
        {
            string listOfAllAdmittedPersons = Console.ReadLine();
            {
                if (i != numberOfAdmittedPersons)
                {
                   result += listOfAllAdmittedPersons;
                }
            }
        }

        if (result.Contains(candidateName))
        {
           Console.WriteLine("true");
        }
        else
        {
           Console.WriteLine("false");
        }
    }
}

应用程序在第一行接收候选 C 的名称(由用户输入)。下一行包含被录取的人数(也是由用户输入的)。然后是所有被录取的人的列表,每行一个人(也是由用户输入的)。

如果候选人 C 被录取(在列表中找到 C),我必须申请显示“True”,如果候选人被拒绝(C 不在列表中),则显示“False”,例如:如果我输入:

John
3
George
Maria
John

控制台将显示:true

但我得到的结果是:false

我可以做些什么来更正我的代码?

标签: c#stringif-statementsubstring

解决方案


您的代码有几个问题。导致您的错误的原因是这一行:

if (i != numberOfAdmittedPersons) 这意味着没有将姓氏添加到您的字符串中。

然而还有另一个问题。给定以下输入:

MAX
2
AMA
XAVIER

结果将是true字符串AMAXAVIER包含字符串MAX。答案是使用集合,例如:

string[] result = new string[numberOfAdmittedPersons];

for (int i = 0; i < numberOfAdmittedPersons; i++)
{
    result[i] = Console.ReadLine();
}

if (result.Contains(candidateName))
{
...

推荐阅读