【问题标题】:How to write a function that takes in int parameters and print them out in combination? Eg: 1,2,3,4 -> 1234如何编写一个接收 int 参数的函数并将它们组合打印出来?例如:1,2,3,4 -> 1234
【发布时间】:2019-09-08 17:38:52
【问题描述】:

我只是在学习如何用 C# 编写代码。对于家庭作业,我们需要编写一个方法,该方法接受 8 个不同的 int 值并返回另一个 int 并将所有值组合在一起。例如,(1, 2, 3, 4) 变为 1234。然后,该方法会将输出返回到Main 函数以打印出Console.WriteLine。只是对我应该做什么感到困惑,因为当方法是 int 时我无法返回字符串,并且将所有 ints 加在一起只是将所有数字相加。

方法:

static int CombineNumbers(int a, int b, int c, int d, int e, int f, int g, int h) {
  return();
}

应该从Main读取int值:

Console.WriteLine(CombineNumbers(1, 2, 3, 4, 5, 6, 7, 8));

【问题讨论】:

  • 1.使用ToString() 将所有数值转换为string 2. 连接所有string 值以创建单个string 3. 使用Int32.TryParse() 将单个string 转换回int
  • 或使用string output = $"{a}{b}{c}{d}";
  • 等等,我们都忘记使用简单的数学了吗? a * 10000000 + b * 1000000 + c * 100000 .....
  • 是的,史蒂夫在这方面是正确的。我们只应该使用基本的 C# 编写方法。我认为它需要一些高级编程,我自己把事情复杂化了。在我发布此消息后不久就想通了。谢谢大家!

标签: c# function


【解决方案1】:

我建议使用Joinparams

创建一个方法来获取 params 的 int 数组(因此您不限于参数的特定大小)然后加入它。如果您只想将连接在一起的数字作为字符串返回,请执行以下操作:

public static string CombineNumbers1(params int[] arr)
{
    return string.Join("", arr);
}

如果你想返回一个整数类型的数字,你可以转换或解析它,如下所示:

public static int CombineNumbers2(params int[] arr)
{
    int.TryParse(string.Join("", arr), out int val);
    return val;
}

所以当我将以下内容传递给方法时:

组合数字1(1, 2, 3, 4, 5, 6, 7, 8);

它应该返回

12345678 在第一种方法中作为字符串,在第二种方法中作为整数。

【讨论】:

    【解决方案2】:

    您必须将数字连接为字符串,然后再次将字符串转换为 int:

    public class Program
    {
        public static void Main()
        {
            Console.WriteLine(CombineNumbers(1, 2, 3, 4, 5, 6, 7, 8));
        }
    
        static int CombineNumbers(int a, int b, int c, int d, int e, int f, int g, int h) {
            String resultString = a.ToString() + b.ToString() + c.ToString() + d.ToString() + e.ToString() + f.ToString() + g.ToString() + h.ToString();
            int result = Convert.ToInt32(resultString);
            return result;
        }
    }
    

    【讨论】:

      【解决方案3】:

      此功能可以帮助您,您可以轻松增加参数数量。

      public class Program
      {
              public static void Main()
              {
                Console.WriteLine(MyFunc(1, 2, 3, 4));
              }
      
      
              private int MyFunc(int a, int b, int c, int d)
              {
                  var str = new List<int>() { a, b, c, d};
      
                 return str.Aggregate((x, y) => int.Parse(x.ToString() + y.ToString()));
              }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-19
        相关资源
        最近更新 更多