为了账号安全,请及时绑定邮箱和手机立即绑定

C# 从 readline 问题将字符串转换为数组

C# 从 readline 问题将字符串转换为数组

PHP
四季花海 2024-01-20 16:00:30
我正在做一些 C# 练习,作业是检查 att 瑞典 SSN 是否颁发给女性或男性。该算法检查第九个数字是否可被 0 整除,则为女性,否则为男性。如果我在字符串变量中使用硬编码的“nr”,该算法会起作用,但如果我尝试从 readline 语句中读取它,则会收到以下错误:指数超出范围。必须为非负数且小于集合的大小。参数名称:startIndex这是我正在使用的代码://string personnr = "860215-2097";string personnr = "";char[] arr;    public void CheckGender(string pnr){    arr = personnr.ToCharArray(9, 1);        if (personnr[9] %2 == 0)    {        Console.WriteLine($"Woman!!!");    }    else    {        Console.WriteLine($"Man!!!");    }}    public void PrintPersonNr(){    Console.WriteLine("Write a personnr in the format yymmdd-nnnn: ");    string nr = Console.ReadLine();    CheckGender(nr);}所以PrintPersonNr我猜这是我的方法不能正常工作。
查看完整描述

3 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

你可以试试这个:


public enum SSNGender

{

  Female,

  Male

}


class Program

{


  static public Dictionary<SSNGender, string> SSNGenderText

    = new Dictionary<SSNGender, string>()

  {

    { SSNGender.Female, "Woman" },

    { SSNGender.Male, "Man" },

  };


  static public SSNGender CheckSSNGender(string pnr)

  {

    // Here check the validity of the pnr (length, format...)

    return pnr[9] % 2 == 0 ? SSNGender.Female : SSNGender.Male;

  }


  static void Main(string[] args)

  {

    Console.WriteLine("Write a personnr in the format yymmdd-nnnn: ");

    string nr = Console.ReadLine();

    var result = CheckSSNGender(nr);

    Console.WriteLine(SSNGenderText[result]);

    Console.ReadKey();

  }


查看完整回答
反对 回复 2024-01-20
?
慕慕森

TA贡献1856条经验 获得超17个赞

尝试以下操作:


        public void CheckGender(string pnr)

        {

            string arr = pnr.Substring(10, 1);


            if (arr == "0")

            {

                Console.WriteLine("Woman!!!");

            }

            else

            {

                Console.WriteLine("Man!!!");

            }

        }


查看完整回答
反对 回复 2024-01-20
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

您需要做的是使用模运算符,然后检查该数字是否可以被二整除,如果结果为零,则它是偶数。

还有一个基本问题,您需要检查字符是否是数字。如果是,则需要完成操作,如果不是,则需要让用户知道。

public void CheckGender(string pnr)

{

    string arr = pnr.Substring(9, 1);

    int num =0;


    if (int.TryParse(arr, num))

    {

        if ((num % 2) == "0")

        {

            Console.WriteLine("Man!!!");

        }

        else

        {

            Console.WriteLine("Woman!!!");

        }

    }

    else

    {

        Console.WriteLine("Not a number!");

    }

}

祝你运动顺利!


查看完整回答
反对 回复 2024-01-20
  • 3 回答
  • 0 关注
  • 33 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信