【发布时间】:2014-10-16 05:03:24
【问题描述】:
好的,这是我在这里的第一篇文章,所以请放轻松! ^.^ 我对 C# 和一般编程非常陌生,我正在努力通过实验室为我的大学编程课程入门。
实验室的目的如下:
- 提示用户以英寸为单位输入比萨饼的直径
- 披萨直径可以输入为实数。确保 用户输入是使用 TryParse() 方法的数字
- 当用户输入“0”作为直径时,立即结束程序,无需任何 进一步处理,消息或提示
- 检查输入的直径是否在 12 英寸到 36 英寸(含)范围内
- 如果条目无效,则显示错误消息并重新提示输入有效条目
- 如果输入有效,则计算披萨面积并确定生产的最大切片数
- 直径为 12 英寸到 20 英寸(含)的只能切成八片。
- 直径大于 20 英寸(包括 24 英寸)的最大可切割成 12 片。
- 直径大于 24 英寸(包括 30 英寸)最多可切割成 16 片。
- 直径大于 30 英寸的可以切割成最多 24 片。
- 创建一个输出格式,以显示比萨的所有可能切割配置的列表以及每个配置的切片数量和切片面积
- 继续提示用户输入披萨直径,仍然提供 0 来结束程序
- 在列表中显示每个输入直径的结果
- 在每次显示新列表之前使用 Console.Clear() 清除控制台
我很难弄清楚为什么我最后的“else”语句不起作用。它与我在以前的实验室中使用的完全相同,因此代码对于我需要的内容没有错误,但是当条目不在 12-36" 之间(包括在内)时,我的 if-else 语句应该跳下来并显示我的“错误条目”消息指出它不在范围内。我的代码的其余部分工作但我不明白为什么当条目不正确时它不会显示我的 else 语句!
我目前的代码,我一直在尝试进行一些小的更改以使其正常工作:
do
{
if (double.TryParse(Console.ReadLine(), out pizzaDiameter) == false) //
{
Console.Write("\n\tENTRY ERROR\nDiameter must be a numerical number!");
Console.Write("\n\nPlease enter the diameter of your pizza (0 to end program): ");
Console.ReadLine();
}
else
{
if (pizzaDiameter >= 12 && pizzaDiameter <= 36)
{
pizzaRadius = pizzaDiameter / 2; //Calculating the radius of the pizza by dividing diameter by 2
wholePizzaArea = Math.Pow(pizzaRadius, 2) * Math.PI; //Determining the whole area of the pizza by multiplying radius^2 by pi
if (pizzaDiameter > 30)
{
Console.Write("Cut in " + SMALL_PIZZA + " slices results in a slice area of " + Math.Round(wholePizzaArea / SMALL_PIZZA, 2) + "\" per slice");
Console.Write("\nCut in " + MEDIUM_PIZZA + " slices results in a slice area of " + Math.Round(wholePizzaArea / MEDIUM_PIZZA, 2) + "\" per slice");
Console.Write("\nCut in " + LARGE_PIZZA + " slices results in a slice area of " + Math.Round(wholePizzaArea / LARGE_PIZZA, 2) + "\" per slice");
Console.Write("\nCut in " + EXTRA_LARGE_PIZZA + " slices results in a slice area of " + Math.Round(wholePizzaArea / EXTRA_LARGE_PIZZA, 2) + "\" per slice");
}
else if (pizzaDiameter > 24)
{
Console.Write("Cut in " + SMALL_PIZZA + " slices results in a slice area of " + Math.Round(wholePizzaArea / SMALL_PIZZA, 2) + "\" per slice");
Console.Write("\nCut in " + MEDIUM_PIZZA + " slices results in a slice area of " + Math.Round(wholePizzaArea / MEDIUM_PIZZA, 2) + "\" per slice");
Console.Write("\nCut in " + LARGE_PIZZA + " slices results in a slice area of " + Math.Round(wholePizzaArea / LARGE_PIZZA, 2) + "\" per slice");
}
else if (pizzaDiameter > 20)
{
Console.Write("Cut in " + SMALL_PIZZA + " slices results in a slice area of " + Math.Round(wholePizzaArea / SMALL_PIZZA, 2) + "\" per slice");
Console.Write("\nCut in " + MEDIUM_PIZZA + " slices results in a slice area of " + Math.Round(wholePizzaArea / MEDIUM_PIZZA, 2) + "\" per slice");
}
else if (pizzaDiameter >= 12)
{
Console.Write("Cut in " + SMALL_PIZZA + " slices results in a slice area of " + Math.Round(wholePizzaArea / SMALL_PIZZA, 2) + "\" per slice");
}
else
{
Console.Write("\n\tENTRY ERROR\n\nPizza must have a diameter in the range of 12\" to 36\" inclusive! \n\nPlease try again.");
}
}
}
Console.Write("\n\nPlease enter the diameter of your pizza (0 to end program): ");
} while (pizzaDiameter > 0);
}
}
}
}
【问题讨论】:
-
发布完整的 do while 循环,以便我们查看
-
你是否在考虑这个 else 声明
else { Console.Write("\n\tENTRY ERROR\n\nPizza must have a diameter in the range of 12\" to 36\" inclusive! \n\nPlease try again."); }
标签: c# if-statement do-while