Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 结束for循环的适当条件是什么?_C#_For Loop - Fatal编程技术网

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

C# 结束for循环的适当条件是什么?,c#,for-loop,C#,For Loop,我需要在for循环中添加以下间隔(我尝试使用if语句,老师要求我减少编码量) 下面的代码为我提供了非常接近我需要的输出,只是它不符合上面的条件。例如,如果我输入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 == pizza

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

下面的代码为我提供了非常接近我需要的输出,只是它不符合上面的条件。例如,如果我输入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");

    }
}
int[]pizzastices=newint[4]{8,12,16,24};
对于(int i=pizzasicles[0];i
电流输出:

期望输出:


我添加了另一个
int
数组来容纳比萨饼直径。
for
循环从
0
迭代到
pizzasicles
的长度,因此
0
3

for
循环中的
if
语句检查用户输入的直径是否在当前迭代的
pizzaDims
对应值的范围内

int[] pizzaSlices = new int[4] { 8, 12, 16, 24 };
int[] pizzaDims = new int[4] { 12, 21, 25, 31 }; // pizza diameters array

if(inputDiameter >= smallest) {
    for (int i = 0; i <= pizzaSlices.Length; i++) {
        if(inputDiameter >= pizzaDims[i] {
            Console.WriteLine("cut in " + pizzaSlices[i] + 
                              " slices results in a slice area of " +
                              Math.Round(areaOfThePizza / pizzaSlices[i], 2) +
                              " per slices");
        } else {
            break; // no need to continue iterating, if one condition is false then
                   // the rest will be as well
        }
    }
}
int[]pizzastices=newint[4]{8,12,16,24};
int[]pizzaDims=newint[4]{12,21,25,31};//比萨饼直径阵列
如果(输入直径>=最小值){
for(int i=0;i=pizzaDims[i]{
Console.WriteLine(“切入”+比萨饼片[i]+
“切片导致切片区域为”+
数学圆(比萨饼/比萨饼片面积[i],2)+
“每片”);
}否则{
break;//不需要继续迭代,如果一个条件为false,则
//其余的也一样
}
}
}

我忍不住添加了一个有点灵巧的解决方案:

[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];
}
[测试]
[测试用例(37,结果=0)]
[测试用例(36,结果=24)]
[测试用例(35,结果=24)]
[测试用例(30,结果=16)]
[测试用例(29,结果=16)]
[测试用例(26,结果=16)]
[测试用例(22,结果=12)]
[测试用例(12,结果=8)]
[测试用例(11,结果=0)]
[测试用例(10,结果=0)]
公共整数GetNumberOfSlices(整数直径)
{
var pizzas=新[]{
新[]{11,0},
新[]{20,8},
新[]{24,12},
新[]{30,16},
新[]{36,24}
};

var pizza=pizzas.FirstOrDefault(p=>diameter你想要什么输出,你收到了什么输出,你遗漏了什么其他相关代码?这是我目前通过键入25得到的输出,我想要相同的输出,但遵循我发布的时间间隔。只花了20分钟在Excel中摆弄,试图找到比萨饼直径和切片数之间的相关性。没什么。你的老师是邪恶的。是的,实际的作业是不同的,因为它在16到24之间有一个20,他故意删除了它,所以我们不能只加4。^^^@JonnyHenly是的,我明白了。我从另一个角度来处理这个问题,并试图推导出一个公式,给定比萨饼直径,将产生所需数量的slic在我输入直径后,es.给了我一些逻辑错误,但它显示的输出是正确的,但是如果输入可以被16个切片整除,它还应该显示将其除以12和8的选项。@BrianNaranjo没问题,如果需要其他帮助,请告诉我。我仍然得到一个逻辑错误,但我在直径arr上加了12除了36号似乎是唯一一个有这个问题的1号。哦,哇,我修正了一个逻辑错误,引入了另一个,我会修正它。它现在应该可以工作了,我在
pizzaDims
中用最小值替换了最大值。我还添加了
else
中断
,但这不是必需的。这样做效率更高呃,如果这也不对,请告诉我。
[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];
}