2017-01-22 8 views
0

Ich habe ein ziemlich einfaches Programm geschrieben, das ein Menü von Auswahlmöglichkeiten anzeigt und Berechnungen auf der Grundlage der Benutzereingabe durchführt. Ich möchte, dass sich das Programm so verhält, dass es den Benutzer fragt, ob er mit dem Menü fortfahren oder das Programm beenden möchte. Ich denke, dass es eine Schleife von irgendeiner Art erfordern könnte, aber ich bin unsicher, wie man es umsetzt.Wie kann der Benutzer wählen, ob das Programm fortsetzen oder beenden (C#)

Hier ist mein Code

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

wo wollen Sie die Benutzer die Wahl haben? –

+0

Das ist eine gute Frage Mikael, ich weiß nicht genau wo. I sie beenden ihre Berechnung von ihrer ersten Wahl, ich möchte, dass das Programm fragt, ob sie zum Menü zurückkehren möchten – Justin

+0

Ok, ich denke, das beste wäre, eine neue Methode für das Berechnungsmenü zu machen, und es direkt von der auszuführen main-Methode, und verwenden Sie einen Aufruf dieser Methode als eine Auswahl am Ende der Berechnungen. Überprüfen Sie die Antwort –

Antwort

2

Es ist ziemlich einfach ist. Du hattest die richtige Idee.

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

Vielen Dank! – Justin

0

Sie können eine neue Methode definieren Menu

Setzen Sie den Menü-Code in dort und dann rufen Sie einfach darauf, wenn Sie es brauchen. Am Ende des Main() können Sie eine einfache verwenden, wenn Fall

Console.WriteLine("Type 'exit' to quit"); 
if(Console.ReadLine() == "exit") 
{ 

}else 
{ 
    Menu(); 
} 
2

Sie können die gleiche Logik wie für Rechnerwahl verwenden und setzen Sie Ihren gesamten Code innerhalb der Schleife.

Ändern Sie den Code in 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; 
} 

Oder bessere Option ist:

Setzen Sie den gesamten Code aus Main innerhalb irgendeiner Methode (dh Start()) und dann in 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; 
} 
+1

Vielen Dank !! – Justin

0

Ändern Sie Ihren Code wie folgt .. Es gibt zu viel Code in der Hauptmethode:

static void Main(string[] args) 
{ 
    ChooseCalculationMenu(); 
} 

public void ChooseCalculationMenu() 
{ 
    // Put the code from Main here instead 
} 

und am Ende jeder Berechnungsmethode:

Console.WriteLine("Press c to continue or q to quit."); 
if (Console.Readline() == "q"); 
{} 
else 
{ 
    ChooseCalculationMenu(); 
} 
Verwandte Themen