【问题标题】:C# - Loop formatting [closed]C# - 循环格式化
【发布时间】:2016-02-02 17:48:30
【问题描述】:

我的任务有点麻烦。它应该也提示用户输入一个范围(2个整数),然后使用下面的格式显示范围内的方程。

例子:

Enter minimum integer: 3
Enter maximum integer: 7

All: 3 + 4 + 5 + 6 + 7 = 25
Even: 4 + 6 = 10
Odd: 3 + 5 + 7 = 15

不要求整个解决方案,只是一些循环格式问题。任何帮助将不胜感激。

            Console.Write("Enter minimum integer: ");
            string min = Console.ReadLine();

            Console.Write("Enter maximum integer: ");
            string max = Console.ReadLine();

            int min32 = int.Parse(min);
            int max32 = int.Parse(max);

            for (int i = min32; i <= max32; i++)
                Console.Write(i + " + ");

【问题讨论】:

  • 请附上您到目前为止所尝试的内容。
  • "我可以让循环与数字相加、偶数和奇数" 缺少什么?加号和 SUM 的结果相加?
  • 你会想问一个问题。您并没有说明究竟是什么不起作用。 “只是一点点循环格式问题”是什么?

标签: c# arrays loops for-loop int


【解决方案1】:

最简单的方法是开始在控制台中输出数字,始终检查这是否是最后输出的数字(如果是这种情况,请不要在数字后面打印+。)

Console.Write("All: ");        
int sum = 0;
for (int i = min32; i <= max32; i++)
{
    if(i != max32) //Only add " + " after the number if this is not the end of the for loop
        Console.Write(i + " + ");
    else
        Console.Write(i); 
    sum += i;
} 
Console.WriteLine(" = " + sum);
//Outputs for min32 = 3 and max32 = 7:
//3 + 4 + 5 + 6 + 7 = 25

奖金回合:对从Enumerable.Range() 返回的IEnumerable&lt;int&gt; 进行LINQ 查询,使用一些Where 语句进行过滤并使用string.Join() 进行连接:

using System;
using System.Linq;

public class Program
{
    public static void Main()
    {
        Console.Write("Min: ");
        int min = int.Parse(Console.ReadLine()); 
        Console.Write("Max: ");
        int max = int.Parse(Console.ReadLine());

        var sequence = Enumerable.Range(min, max - min + 1);

        string all = "All: " + string.Join(" + ", sequence);
        string even = "Even: " + string.Join(" + ", sequence.Where(a => a % 2 == 0));
        string odd = "Odd: " + string.Join(" + ", sequence.Where(a => a % 2 == 1));

        Console.WriteLine(all + " = " + sequence.Sum());
        Console.WriteLine(even + " = " + sequence.Where(a => a % 2 == 0).Sum());
        Console.WriteLine(odd + " = " + sequence.Where(a => a % 2 == 1).Sum());

    }
}

【讨论】:

  • :|我要在桌子上敲打我的头,因为之前没有想到这一点...... TYVM
【解决方案2】:

也许为每个数字集合保留一个字符串。添加到总数时,还要将数字附加到字符串中。另一个选项可能是字符串列表中的 string.Join(),使用“+”作为分隔符。

循环结束后,打印连接列表以及相应的总和。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-23
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多