我编写了一个相当简单的程序,它显示了一个选项菜单,并根据用户的输入执行计算。我想使程序运行,以便它询问用户是否要继续返回菜单或退出程序。我认为它可能需要某种循环,但我不确定如何实现它。
这是我的代码
using System;
namespace WarmUpCalculations
{
class Program
{
static void Main(string[] args)
{
Console.Clear();
Console.WriteLine("Welcome to the Chemistry Formula Calculator!\n\n\n");
Console.WriteLine("Press 1 for the Density Calculator");
Console.WriteLine("Press 2 for the Moles Calculator");
Console.WriteLine("Press 3 for the Energy of a Wave Calculator");
Console.WriteLine("Press 4 for the Ideal Gas Law Calculator\n\n");
Console.WriteLine("Please enter a Number from the Options above");
string choice = Console.ReadLine();
switch (choice)
{
case "1":
DensityCalculator();
break;
case "2":
MolesCalculator();
break;
case "3":
EnergyOfWaveCalculator();
break;
case "4":
IdealGasLawCalculator();
break;
}
}
static void DensityCalculator()
{
Console.Clear();
Console.WriteLine("Density Calaculator\n\n");
Console.WriteLine("Will this be for Grams or Kilograms?");
Console.WriteLine("Type 'g' for Grams or 'kg' for Kilograms");
string unitMass = Console.ReadLine();
Console.WriteLine("Please Enter Your Mass");
Decimal Mass = Convert.ToDecimal(Console.ReadLine());
Console.WriteLine("Enter units for Volume");
string unitVolume = Console.ReadLine();
Console.WriteLine("Please Enter Your Volume");
Decimal Volume = Convert.ToDecimal(Console.ReadLine());
Decimal Density = Mass / Volume;
Math.Round(Density, 4);
Console.Clear();
Console.WriteLine("Moles Calaculator\n\n");
Console.Write("Your Density is ");
Console.Write(Density);
Console.Write(unitMass);
Console.Write("/");
Console.WriteLine(unitVolume);
Console.Write(" \n\n");
}
static void MolesCalculator()
{
Console.Clear();
Console.WriteLine("Moles Calaculator\n\n");
Console.WriteLine("Please enter mass of sample");
Decimal Mass = Convert.ToDecimal(Console.ReadLine());
Console.WriteLine("Please Enter Your molar mass");
Decimal MolarMass = Convert.ToDecimal(Console.ReadLine());
Decimal Moles = Mass / MolarMass;
Console.Clear();
Console.WriteLine("Moles Calaculator\n\n");
Console.Write("Your sample has ");
Console.Write(Moles);
Console.Write(" moles\n\n");
}
static void EnergyOfWaveCalculator()
{
Console.Clear();
Console.WriteLine("Energy of Wave Calaculator\n\n");
Console.WriteLine("Please enter the frequency");
double Frequency = Convert.ToDouble(Console.ReadLine());
double PlancksConstant = 6.626e-34;
double Energy = PlancksConstant * Frequency;
Console.Clear();
Console.WriteLine("Energy of Wave Calaculator\n\n");
Console.Write("The answer is ");
Console.Write(Energy);
Console.Write(" \n\n");
}
static void IdealGasLawCalculator()
{
Console.Clear();
Console.WriteLine("Ideal Gas Law Calaculator\n\n");
Console.WriteLine("Would you like to solve the following equation for Pressure or Volume? Press v for Volume or p for Pressure");
string Frequency = Console.ReadLine();
if (Frequency == "v"){
Console.Clear();
Console.WriteLine("Ideal Gas Law Calaculator\n\n");
Console.WriteLine("Please enter the pressure");
decimal Pressure = Convert.ToDecimal(Console.ReadLine());
Console.WriteLine("Please enter the the number of moles");
decimal NumberOfMoles = Convert.ToDecimal(Console.ReadLine());
Console.WriteLine("Please enter the the temperature in degrees Kelvin");
decimal TemperatureKelvin = Convert.ToDecimal(Console.ReadLine());
decimal GasLawConstant = Convert.ToDecimal(8.314);
decimal IdealGasLaw = NumberOfMoles * GasLawConstant * TemperatureKelvin / Pressure;
Console.Clear();
Console.WriteLine("Energy of Wave Calaculator\n\n");
Console.Write("Your answer is ");
Console.Write(IdealGasLaw);
Console.Write(" \n\n");
}
else
{
Console.Clear();
Console.WriteLine("Ideal Gas Law Calaculator\n\n");
Console.WriteLine("Please enter the volume");
decimal Volume = Convert.ToDecimal(Console.ReadLine());
Console.WriteLine("Please enter the the number of moles");
decimal NumberOfMoles = Convert.ToDecimal(Console.ReadLine());
Console.WriteLine("Please enter the the temperature in degrees Kelvin");
decimal TemperatureKelvin = Convert.ToDecimal(Console.ReadLine());
decimal GasLawConstant = Convert.ToDecimal(8.314);
decimal IdealGasLaw = NumberOfMoles * GasLawConstant * TemperatureKelvin / Volume;
Console.Clear();
Console.WriteLine("Energy of Wave Calaculator\n\n");
Console.Write("Your answer is ");
Console.Write(IdealGasLaw);
Console.Write(" \n\n");
}
}
}
}
答案 0 :(得分:2)
这很简单。你有正确的想法。
bool shouldContinue = true;
while(shouldContinue){
Console.WriteLine("Press 1 for the Density Calculator");
Console.WriteLine("Press 2 for the Moles Calculator");
Console.WriteLine("Press 3 for the Energy of a Wave Calculator");
Console.WriteLine("Press 4 for the Ideal Gas Law Calculator\n\n");
Console.WriteLine("Press 5 to exit");
Console.WriteLine("Please enter a Number from the Options above");
string choice = Console.ReadLine();
switch (choice)
{
case "1":
DensityCalculator();
break;
case "2":
MolesCalculator();
break;
case "3":
EnergyOfWaveCalculator();
break;
case "4":
IdealGasLawCalculator();
break;
case "5":
shouldContinue = false;
break;
}
}
答案 1 :(得分:2)
您可以使用与计算器选择相同的逻辑,并将所有代码放在循环中。
更改Main
中的代码:
char action = 'Y'; //create varible for user choice (continue or not)
while (action == 'Y') // add loop
{
Console.Clear();
Console.WriteLine("Welcome to the Chemistry Formula Calculator!\n\n\n");
Console.WriteLine("Press 1 for the Density Calculator");
Console.WriteLine("Press 2 for the Moles Calculator");
Console.WriteLine("Press 3 for the Energy of a Wave Calculator");
Console.WriteLine("Press 4 for the Ideal Gas Law Calculator\n\n");
Console.WriteLine("Please enter a Number from the Options above");
string choice = Console.ReadLine();
switch (choice)
{
case "1":
DensityCalculator();
break;
case "2":
MolesCalculator();
break;
case "3":
EnergyOfWaveCalculator();
break;
case "4":
IdealGasLawCalculator();
break;
}
//add these lines
Console.WriteLine("Do you want to continue!\n\n\n");
Console.WriteLine("Press Y to continue");
Console.WriteLine("Press N to finish");
action = Console.ReadKey().KeyChar;
}
或者更好的选择是:
将Main
中的所有代码放在某个方法(即Start()
)中,然后放在Main
中:
char action = 'Y';
while (action == 'Y')
{
Start();
Console.WriteLine("Do you want to continue!\n\n\n");
Console.WriteLine("Press Y to continue");
Console.WriteLine("Press N to finish");
action = Console.ReadKey().KeyChar;
}
答案 2 :(得分:0)
您可以定义新方法Menu
将菜单代码放在那里,然后在需要时调用它。在Main()
结束时,您可以使用简单的if case
Console.WriteLine("Type 'exit' to quit");
if(Console.ReadLine() == "exit")
{
}else
{
Menu();
}
答案 3 :(得分:0)
像这样更改代码..主方法中的代码太多了:
static void Main(string[] args)
{
ChooseCalculationMenu();
}
public void ChooseCalculationMenu()
{
// Put the code from Main here instead
}
并在每种计算方法的最后:
Console.WriteLine("Press c to continue or q to quit.");
if (Console.Readline() == "q");
{}
else
{
ChooseCalculationMenu();
}