c# - 结束 for 循环的适当条件是什么?

标签 c# for-loop

我需要在for循环中添加以下间隔(我尝试使用if语句,老师要求我减少编码量)。

Intervals (Pizza Diameters)   
12 - 20 = 8 slices  
21 - 24 = 12 slices   
25 - 30 = 16 slices  
31 - 36 = 24 slices

以下代码提供的输出与我需要的非常接近,只是它不符合上述条件。例如,如果我输入 24,它应该只提供 8 和 12 片的输出。

int[] pizzaSlices = new int[4] { 8, 12, 16, 24 };

for (int i = pizzaSlices[0]; i < inputDiameter; i++) {
    if (i == pizzaSlices[0] || i == pizzaSlices[1] || i == pizzaSlices[2] ||
        i == pizzaSlices[3]) {

       Console.WriteLine("cut in " + i + " slices results in a slice area of " +
       Math.Round(areaOfThePizza / i, 2) + " per slices");

    }
}

当前输出:

期望的输出:

最佳答案

我忍不住添加了一个有点 LINQ'y 的解决方案:

[Test]
[TestCase(37, Result = 0)]
[TestCase(36, Result = 24)]
[TestCase(35, Result = 24)]
[TestCase(30, Result = 16)]
[TestCase(29, Result = 16)]
[TestCase(26, Result = 16)]
[TestCase(22, Result = 12)]
[TestCase(12, Result = 8)]
[TestCase(11, Result = 0)]
[TestCase(10, Result = 0)]
public int GetNumberOfSlices(int diameter)
{
    var pizzas = new[] {
        new[] { 11, 0 }, 
        new[] { 20, 8 }, 
        new[] { 24, 12 }, 
        new[] { 30, 16 }, 
        new[] { 36, 24 }
    };
    var pizza = pizzas.FirstOrDefault(p => diameter <= p[0]);

    return pizza == null ? 0 : pizza[1];
}

关于c# - 结束 for 循环的适当条件是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35498719/

相关文章:

c# - Reactive 的 "Buffer until quiet"行为?

c# - 绑定(bind)边界可见性/隐藏在 WPF 中

c - 使用二维数组,我的数组没有出现

c - 我正在尝试创建一个数组并用 1 到 10 之间的数字填充它。为什么它不起作用?

r - 循环内的哪个函数效率更高(ncol/nrow() 或 dim())

c# - MySQL - 更新查询不影响行

c# - 如何使用 LINQ 从选择中返回一行?

c# - LINQ 表达式树是专有树吗?

javascript - 如何监控for循环?

java - 在 for 循环中为数组长度声明一个变量