代码之家  ›  专栏  ›  技术社区  ›  thehelaeper67

如何在运行时将用户输入保存到数组中?

  •  0
  • thehelaeper67  · 技术社区  · 2 年前

    我一直在处理列表,所以我完成了这项工作,但我正在尝试使用另一种数据结构,例如 大堆 .

    我下面的代码运行良好,当我输入全名+电话号码时,它会按原样打印出来。但由于我使用的是switch case,如果我转到另一个case,之前输入的值(全名+电话号码)都不见了。

    case 2:
        Console.WriteLine("Enter first name:");
        string firstName = Console.ReadLine();
    
        Console.WriteLine("Enter last name:");
        string lastName = Console.ReadLine();
    
        Console.WriteLine("Enter your phone number:");
        int mobileNo = Convert.ToInt32(Console.ReadLine());
    
        Console.WriteLine(firstName + ", " + lastName + ", " + mobileNo);
        break;
    

    我使用的是控制台应用程序,在关闭程序之前,我不需要将值保存到文本文件中,只需在屏幕上即可。我已经能够用现有的数组值来做这件事,只是不能用用户输入的值,所以这就是我最终得到的结果。

    1 回复  |  直到 2 年前
        1
  •  1
  •   MrAlbino    2 年前

    您可以尝试将变量声明从循环中移除。因此,当面临不同的情况时,它们仍然可用。

    //declarations out of your loop.
    string firstName ="";
    string lastName = "";
    int mobileNo=0;
    List<string> lines=new List<string>();  
    //end of declarations.
    
    //your loop or whatever you have here.
    switch()
    // your cases.
    case 2:
        Console.WriteLine("Enter first name:");
        firstName = Console.ReadLine();
    
        Console.WriteLine("Enter last name:");
        lastName = Console.ReadLine();
    
        Console.WriteLine("Enter your phone number:");
        mobileNo = Convert.ToInt32(Console.ReadLine());
    
        lines.Add(firstName + ", " + lastName + ", " + mobileNo);
        break;
    
    //end of switch statement iterate over lines list to print all lines.
    foreach(var line in lines){
        Console.WriteLine(line);
    }
    
        2
  •  0
  •   b1tByte    2 年前

    在C#中,如果您不知道集合中有多少项,最好使用List。

    我会这样解决你的任务:

    1. 声明一个描述对象的类。(在您的情况下,它是User)

      internal class User
      {
          public string FirstName { get; set; }
          public string LastName { get; set; }
          public int PhoneNumber { get; set; }
      
          public override string ToString()
          {
              return $"Full name: {FirstName} {LastName}, Phone Number: {PhoneNumber};";
          }
       }
      
    2. 用户声明列表:

      var usersList = new List<User>();
      
    3. 输入数据:

      Console.WriteLine("Enter first name:");
      string firstName = Console.ReadLine();
      
      Console.WriteLine("Enter last name:");
      string lastName = Console.ReadLine();
      
      Console.WriteLine("Enter your phone number:");
      int mobileNo = Convert.ToInt32(Console.ReadLine());
      
    4. 在迭代结束时:

      usersList.Add(new User
      {
          FirstName = firstName,
          LastName = lastName,
          PhoneNumber = mobileNo
      });
      
    5. 如果您想记录您的列表:

      foreach (var user in usersList)
      {
          Console.WriteLine(user);
      }
      

    完整代码:

    internal class User
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int PhoneNumber { get; set; }
    
        public override string ToString()
        {
            return $"Full name: {FirstName} {LastName}, Phone Number: {PhoneNumber};";
        }
    }
    
    internal class Program
    {
        static void Main(string[] args)
        {
            var usersList = new List<User>();
    
            switch() // your switch
            {
                case 2:
                {
                    Console.WriteLine("Enter first name:");
                    string firstName = Console.ReadLine();
    
                    Console.WriteLine("Enter last name:");
                    string lastName = Console.ReadLine();
    
                    Console.WriteLine("Enter your phone number:");
                    int mobileNo = Convert.ToInt32(Console.ReadLine());
    
                    userList.Add(new User
                    {
                        FirstName = firstName,
                        LastName = lastName,
                        PhoneNumber = mobileNo
                    });
                    break;
                }
            }
            
            foreach (var user in users)
            {
                Console.WriteLine(user);
            }
        }
    }