控制台应用程序c#循环
本文关键字:循环 应用程序 控制台 | 更新日期: 2023-09-27 18:11:39
嗨,我正在学习成为一名程序员,这是我正在工作的一个项目。控制台基本上接受用户的输入(直径),并告诉你你将得到多少披萨片和每片的面积。在告诉它们每个的切片和面积之后,它必须提示新的输入。切片是根据直径12 - 20英寸= 8片的范围确定的。用户必须在12"- 36"之间输入,否则会收到错误信息。同样,如果用户输入的直径为36,则它必须以4的减数显示所有其他切片,即24、20、16、12、8。但如果直径最终落在8片下面,它只能显示出这一点。因此,12个切片将显示8个切片和12个切片。
最后,我们将学习循环,我们将在本项目中使用do while循环和for循环。
这是我的,它不起作用。
//DECLARATIONS
double circleArea; // area of pizza
double diameter; // diameter of the pizza
double areaOfSlice; // area of the slices
double radius; // half the diameter of the pizza
double slices = 0; // number of pizza slices
string message = ""; // a string to hold a message to the user
const int DIAMETER_RANGE_MASSIVE = 36;
const int DIAMETER_RANGE_EXTRA_LARGE = 30;
const int DIAMETER_RANGE_LARGE = 24;
const int DIAMETER_RANGE_MED = 16;
const int DIAMETER_RANGE_LOW = 12; // Low end on range scale for diameter
const int SLICES_LOW_DIAMETER = 8; // number of pizza slices based on diameter
const int SLICES_MID_DIAMETER = 12; // number of pizza slices based on diameter
const int SLICES_HIGH_DIAMETER = 16; // number of pizza slices based on diameter
const int SLICES_GIANT_DIAMETER = 24; // number of pizza slices based on diameter
bool needInput = true;
const int END_PROGRAM = 0;
// INPUT
// Prompt for and get keyboard input
Console.Write("Please enter the diameter of your pizza (0 to end program): "); // get user to input diameter
diameter = Convert.ToDouble(Console.ReadLine()); // read a line of text (string) from the keyboard,
// convert that string to an double,
// assign the resulting value to diameter
// PROCESSING
// determine if diameter meets requirements of 12" to 36"
// if does not meet requirements show error message and have user enter in new diameter
do
{
if (diameter < DIAMETER_RANGE_LOW || diameter > DIAMETER_RANGE_MASSIVE)
{
message = "'nENTRY ERROR";
message += "'nPizza must have a diameter in the range of 12” to 36” inclusive!";
message += "'nPlease try again.";
}
else {
needInput = false;
// determine the number of slices based on diameter
if (diameter >= DIAMETER_RANGE_LOW && diameter < DIAMETER_RANGE_MED)
{
slices = (SLICES_LOW_DIAMETER);
}
else if (diameter < DIAMETER_RANGE_LARGE)
{
slices = (SLICES_MID_DIAMETER);
}
else if (diameter < DIAMETER_RANGE_EXTRA_LARGE)
{
slices = (SLICES_HIGH_DIAMETER);
}
else
{
slices = (SLICES_GIANT_DIAMETER);
}
Console.Clear(); // clears console to show new output lines
//OUTPUT
for (int slicesAddFour = 8; slicesAddFour <=slices; slicesAddFour+=4) // for each slices
{
// determine the area of the slices
radius = diameter / 2; // uses diameter to get radius
circleArea = Math.PI * Math.Pow(radius, 2); // uses math class to calculate circle area
areaOfSlice = Math.Round((circleArea / slices), 2); // divides circle area by slices, takes the result of above calculation and rounds
Console.WriteLine("'nA {0}'" Pizza diameter: {0}'".", diameter);
message +=("'n==============================================");
Console.WriteLine("'nCut in {0} slices results in an area of {1}'" per slice.",areaOfSlice,slices);
}
} //end of else
message = ("'nPlease enter the diameter of your pizza (0 to end program)");
needInput = true;
} while (diameter != END_PROGRAM && needInput);
}
}
}
您的问题是您读入数据一次,然后继续循环而没有获得任何新数据。如果你移动
Console.Write("Please enter the diameter of your pizza (0 to end program): "); // get user to input diameter
diameter = Convert.ToDouble(Console.ReadLine()); // read a line of text (string) from the keyboard,
内的循环,它应该解决你的问题
移动这两行:
Console.Write("Please enter the diameter of your pizza (0 to end program): "); // get user to input diameter
diameter = Convert.ToDouble(Console.ReadLine()); // read a line of text (string) from the keyboard,
内部的do/while循环。
你的代码变成:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SOHelp
{
class Program
{
static void Main(string[] args)
{
//DECLARATIONS
double circleArea; // area of pizza
double diameter; // diameter of the pizza
double areaOfSlice; // area of the slices
double radius; // half the diameter of the pizza
double slices = 0; // number of pizza slices
string message = ""; // a string to hold a message to the user
const int DIAMETER_RANGE_MASSIVE = 36;
const int DIAMETER_RANGE_EXTRA_LARGE = 30;
const int DIAMETER_RANGE_LARGE = 24;
const int DIAMETER_RANGE_MED = 16;
const int DIAMETER_RANGE_LOW = 12; // Low end on range scale for diameter
const int SLICES_LOW_DIAMETER = 8; // number of pizza slices based on diameter
const int SLICES_MID_DIAMETER = 12; // number of pizza slices based on diameter
const int SLICES_HIGH_DIAMETER = 16; // number of pizza slices based on diameter
const int SLICES_GIANT_DIAMETER = 24; // number of pizza slices based on diameter
bool needInput = true;
const int END_PROGRAM = 0;
// INPUT
// Prompt for and get keyboard input
// convert that string to an double,
// assign the resulting value to diameter
// PROCESSING
// determine if diameter meets requirements of 12" to 36"
// if does not meet requirements show error message and have user enter in new diameter
string message = "Please enter the diameter of your pizza (0 to end program): ";
do
{
Console.Write(message); // get user to input diameter
diameter = Convert.ToDouble(Console.ReadLine()); // read a line of text (string) from the keyboard,
if (diameter < DIAMETER_RANGE_LOW || diameter > DIAMETER_RANGE_MASSIVE)
{
message = "'nENTRY ERROR";
message += "'nPizza must have a diameter in the range of 12” to 36” inclusive!";
message += "'nPlease try again.";
}
else {
needInput = false;
// determine the number of slices based on diameter
if (diameter >= DIAMETER_RANGE_LOW && diameter < DIAMETER_RANGE_MED)
{
slices = (SLICES_LOW_DIAMETER);
}
else if (diameter < DIAMETER_RANGE_LARGE)
{
slices = (SLICES_MID_DIAMETER);
}
else if (diameter < DIAMETER_RANGE_EXTRA_LARGE)
{
slices = (SLICES_HIGH_DIAMETER);
}
else
{
slices = (SLICES_GIANT_DIAMETER);
}
Console.Clear(); // clears console to show new output lines
//OUTPUT
for (int slicesAddFour = 8; slicesAddFour <=slices; slicesAddFour+=4) // for each slices
{
// determine the area of the slices
radius = diameter / 2; // uses diameter to get radius
circleArea = Math.PI * Math.Pow(radius, 2); // uses math class to calculate circle area
areaOfSlice = Math.Round((circleArea / slices), 2); // divides circle area by slices, takes the result of above calculation and rounds
Console.WriteLine("'nA {0}'" Pizza diameter: {0}'".", diameter);
message +=("'n==============================================");
Console.WriteLine("'nCut in {0} slices results in an area of {1}'" per slice.",areaOfSlice,slices);
}
} //end of else
message = ("'nPlease enter the diameter of your pizza (0 to end program)");
needInput = true;
} while (diameter != END_PROGRAM && needInput);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Lab6B
{
class Program
{
static void Main(string[] args)
{
//DECLARATIONS
double circleArea; // area of pizza
double diameter; // diameter of the pizza
double areaOfSlice; // area of the slices
double radius; // half the diameter of the pizza
double slices = 0; // number of pizza slices
const int INPUT_MAX = 36; // maximum entry for diameter
const int DIAMETER_RANGE_EXTRA_LARGE = 30; // diameter range used to figure out slices
const int DIAMETER_RANGE_LARGE = 24; // diameter range used to figure out slices
const int DIAMETER_RANGE_MED = 16; // diameter range used to figure out slices
const int INPUT_MIN = 12; // minimum entry for diameter
const int SLICES_LOW_DIAMETER = 8; // number of pizza slices based on diameter
const int SLICES_MID_DIAMETER = 12; // number of pizza slices based on diameter
const int SLICES_HIGH_DIAMETER = 16; // number of pizza slices based on diameter
const int SLICES_GIANT_DIAMETER = 24; // number of pizza slices based on diameter
bool needInput = true; // does the program need input true or false
const int END_PROGRAM = 0; // 0 ends the program
// INPUT
// Prompt for and get keyboard input
Console.Write("Please enter the diameter of your pizza: "); // get user to input diameter
diameter = Convert.ToDouble(Console.ReadLine()); // read a line of text (string) from the keyboard,
// convert that string to an double,
// assign the resulting value to diameter
while (diameter != END_PROGRAM && needInput) // Begin while loop
{
// PROCESSING
// determine if diameter meets requirements of 12" to 36"
// if does not meet requirements show error message and have user enter in new diameter
if (diameter < INPUT_MIN || diameter > INPUT_MAX)
{
Console.WriteLine( "'nENTRY ERROR'nPizza must have a diameter in the range of 12” to 36” inclusive!'nPlease try again.");
}
else
{
needInput = false;
// determine the number of slices based on diameter
if (diameter < DIAMETER_RANGE_MED)
{
slices = (SLICES_LOW_DIAMETER);
}
else if (diameter < DIAMETER_RANGE_LARGE)
{
slices = (SLICES_MID_DIAMETER);
}
else if (diameter < DIAMETER_RANGE_EXTRA_LARGE)
{
slices = (SLICES_HIGH_DIAMETER);
}
else
{
slices = (SLICES_GIANT_DIAMETER);
}
Console.Clear(); // clears console to show new output lines
//OUTPUT
Console.WriteLine("'nA {0}'" Pizza diameter: {0}'".", diameter);
Console.WriteLine("'n==============================================");
for (int slicesAddFour = 8; slicesAddFour <= slices; slicesAddFour += 4) // for each slices
{
// determine the area of the slices
radius = diameter / 2; // uses diameter to get radius
circleArea = Math.PI * Math.Pow(radius, 2); // uses math class to calculate circle area
areaOfSlice = Math.Round((circleArea / slicesAddFour), 2); // divides circle area by slices, takes the result of above calculation and rounds
Console.WriteLine("'nCut in {0} slices results in an area of {1}'" per slice.", slicesAddFour, areaOfSlice);
}
} //end of else
Console.Write("'nPlease enter the diameter of your pizza (0 to exit): ");
diameter = Convert.ToDouble(Console.ReadLine());
Console.Clear(); // clears console to show new output lines
// set the need input value back to true for new entry
needInput = true;
} // end of while loop
}
}
}