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