【问题标题】:How to make my code output comma after all values that go under criteria besides the last在除最后一个之外的所有值都符合条件之后,如何使我的代码输出逗号
【发布时间】:2019-10-09 06:54:16
【问题描述】:

代码需要在符合条件的值之后输出逗号,除了最后一个,似乎无法找到一种方法如何让代码忽略最后一个逗号 .

public class LabWork1
{
    public static void Main(string[] args)
    {
        Console.Write("n: ");
        int n = int.Parse(Console.ReadLine());
        var numbers = new StringBuilder();

        for (int i = 1; i <= n; i++)
        { 
            if (i % 3 == 0 || i % 5 == 0)
            {
                numbers.Append(i);
                numbers.Append(", ");
            }
        }

        Console.Write(numbers.ToString());
    }
}

应该是

3, 5, 6, 9

实际(注意最后一个逗号

3, 5, 6, 9,

【问题讨论】:

    标签: c# .net string


    【解决方案1】:

    您可以简单地使用 string.Join 和 LINQ:

    var numbers = string.Join(", ", Enumerable.Range(1 , n)
                                    .Where(i => i % 3 == 0 || i % 5 == 0));
    Console.Write(numbers);
    

    只需确保您已将以下内容添加到您的 using 指令中:

    using System.Linq;
    

    【讨论】:

      【解决方案2】:

      要修复您的当前解决方案,请添加逗号,之前添加i: 当有空的numbers 添加i;如果numbers不为空,则先添加", ",再添加i

          ...
          for (int i = 1; i <= n; i++)
          { 
                  if (i % 3 == 0 || i % 5 == 0)
                  {
                          // Add comma (if required) first...
                          if (numbers.Length > 0)
                                  numbers.Append(", ");        
      
                          // ...and only then value
                          numbers.Append(i);
                  }
          }
          ...
      

      【讨论】:

        【解决方案3】:

        您可以使用其他解决方案来忽略字符串生成器中的额外逗号。

        但如果你想从现有代码中删除,,你可以修剪逗号和空格。

        您可以使用TrimEnd(',', ' ') 修剪输出字符串中的最后一个逗号和空格

        Console.Write(numbers.ToString().TrimEnd(',', ' '));
        

        MSDN:.TrimEnd()


        第二种方法:

        不要在字符串生成器中附加i,而是将其存储在List&lt;int&gt; 中。 在将numbers 写入控制台时,使用string.Join()

        MSDN:string.Join(string separator, IEnumerable&lt;T&gt; values)

        连接构造的 IEnumerable 集合的成员 类型 String,在每个成员之间使用指定的分隔符

        您的解决方案将如下所示

        ...
        //Store all i's in list
        List<int> numbers = new List<int>(); 
        for (int i = 1; i <= n; i++)
        { 
            if (i % 3 == 0 || i % 5 == 0)
                numbers.Add(i);
        }
        
        Console.Write(string.Join(", ", numbers));
        ...
        

        【讨论】:

          猜你喜欢
          • 2012-12-03
          • 2012-01-08
          • 1970-01-01
          • 2013-01-23
          • 1970-01-01
          • 1970-01-01
          • 2011-06-10
          • 2012-06-07
          • 2012-11-23
          相关资源
          最近更新 更多