C#控制台计算器方法的重载不带0参数

时间:2014-03-30 05:03:24

标签: c# methods console-application calculator

我不知道如何在我的计算器应用程序中使用方法。我的方法有什么问题? 我单独写了这个4计算器,但不知道如何使用方法将它们组合在一起。

此计算器允许用户从以下主菜单中进行选择:

  1. 长度计算器
  2. 体重指数计算器
  3. 腰围高度计算器
  4. 燃油消耗量计算器
  5. 退出计算器
  6. 我当前的代码有4个错误说:

      

    方法'BMICalculator'没有重载需要0个参数
      方法'FuelConsumptionCalculator'没有重载需要0个参数
      方法'LengthCalculator'的重载不带0参数   方法'WaistToHeightCalculator'没有重载需要0参数

    我错过了什么?

    我当前的代码:

            static void LengthCalculator(string[] args) {
    
            double Centimetres = 0.0, Feet = 0.0, Inches = 0.0;
            string AnotherConversion = null;
            string LengthCalculatorMenu;
            int LengthCalculatorOption;
    
            do {
                LengthCalculatorMenu = ("Enter 1) Convert centimetres to feet and inches:"
                                     + "\nEnter 2) Convert feet and inches to centimetres:");
                Console.Write(LengthCalculatorMenu);
                LengthCalculatorOption = int.Parse(Console.ReadLine());
    
                if (LengthCalculatorOption == 1) {
                    Console.WriteLine("Please Enter the Centimetres(cm) that you wish to convert to feet and inches");
                    Centimetres = double.Parse(Console.ReadLine());
                    Feet = (Centimetres / 2.54) / 12;
                    int iFeet = (int)Feet;
                    Inches = (Feet - (double)iFeet) * 12;
                    Console.WriteLine("\nThe equivalent in feet and inches is {0:G1} ft {1:G1} ins", Feet, Inches);
                    Console.Write("\nWould you like to make an another conversion? \n\n(Enter Y to make an another conversion/Enter any other key to exit):");
                    AnotherConversion = Console.ReadLine();
                } else if (LengthCalculatorOption == 2) {
                    Console.WriteLine("Please Enter the Feet");
                    Feet = double.Parse(Console.ReadLine());
                    Console.WriteLine("Please Enter the Inches");
                    Inches = double.Parse(Console.ReadLine());
                    Centimetres = ((Feet * 12) + Inches) * 2.54;
                    Console.WriteLine("\nThe equivalent in centimetres is {0:G}cm", Centimetres);
                    Console.Write("\nWould you like to make an another conversion? \n\n(Enter Y to make an another conversion/Enter any other key to exit):");
                    AnotherConversion = Console.ReadLine();
                }
            } while (AnotherConversion == "y" || AnotherConversion == "Y");
        }
    
        static void BMICalculator(string[] args) {
    
            double WeightKg = 0.0, HeightCm = 0.0, Weightlbs = 0.0, WeightOz = 0.0, BMI = 0.0, Feet = 0.0, Inches = 0.0;
            int BMIOption;
            string again = null;
    
            do {
                string BMIMenu = ("Which Measurement You Want to use to enter the weight and height?"
                                + "\n1)Enter 1 for Metric"
                                + "\n2)Enter 2 for British Imperial:");
                Console.Write(BMIMenu);
                BMIOption = int.Parse(Console.ReadLine());
    
                if (BMIOption == 1) {
                    Console.Write("\nPlease Enter your Weight in Kilogram (kg):");
                    WeightKg = double.Parse(Console.ReadLine());
                    Console.Write("\nPlease Enter your Height in in centimetres (cm):");
                    HeightCm = double.Parse(Console.ReadLine());
                    BMI = WeightKg / (HeightCm / 100 * HeightCm / 100);
    
                    if (BMI >= 35.0) {
                        Console.WriteLine("\nYour BMI is {0:G},Severe Obesity", BMI);
                    } else if (BMI >= 30.0) {
                        Console.WriteLine("\nYour BMI is {0:G},Obese", BMI);
                    } else if (BMI >= 25.0) {
                        Console.WriteLine("\nYour BMI is {0:G},OverWeight", BMI);
                    } else if (BMI >= 18.5) {
                        Console.WriteLine("\nYour BMI is {0:G},Healthy BodyWeight", BMI);
                    } else if (BMI <= 18.5) {
                        Console.WriteLine("\nYour BMI is {0:G},UnderWeight", BMI);
                    }//End if
                    Console.Write("\nWould you like to make an another conversion? \n\n(Enter Y to make an another conversion/Enter any other key to exit):");
                    again = Console.ReadLine();
    
                } else if (BMIOption == 2) {
                    Console.WriteLine("Please Enter your Weight in Pounds (lbs):");
                    Weightlbs = double.Parse(Console.ReadLine());
                    Console.WriteLine("Please Enter your Weight in Ounces (oz):");
                    WeightOz = double.Parse(Console.ReadLine());
                    Console.WriteLine("Please Enter your Height in Feet (ft):");
                    Feet = double.Parse(Console.ReadLine());
                    Console.WriteLine("Please Enter your Height in Inches (ins):");
                    Inches = double.Parse(Console.ReadLine());
    
                    WeightKg = ((Weightlbs * 16) + WeightOz) / 35.2;
                    HeightCm = ((Feet * 12) + Inches) * 2.54;
                    BMI = WeightKg / (HeightCm / 100 * HeightCm / 100);
    
                    if (BMI >= 35) {
                        Console.WriteLine("Your BMI is {0:G},Severe Obesity", BMI);
                    } else if (BMI >= 30) {
                        Console.WriteLine("Your BMI is {0:G},Obese", BMI);
                    } else if (BMI >= 25) {
                        Console.WriteLine("Your BMI is {0:G},OverWeight", BMI);
                    } else if (BMI >= 18.5) {
                        Console.WriteLine("Your BMI is {0:G},Healthy BodyWeight", BMI);
                    } else if (BMI <= 18.5) {
                        Console.WriteLine("Your BMI is {0:G},UnderWeight", BMI);
                    }//End if
                    Console.Write("\nWould you like to make an another conversion? \n\n(Enter Y to make an another conversion/Enter any other key to exit):");
                    again = Console.ReadLine();
                }
            } while (again == "y" || again == "Y");
        }
    
    
        static void WaistToHeightCalculator(string[] args) {
    
            int WaistToHeightCalculatorOption;
            int GenderOption;
            string AnotherConversion = null;
            double HeightCm = 0.0, WaistCm = 0.0;
            double WaistToHeightRatio = 0.0;
            double WaistIns = 0.0, HeightFeet = 0.0, HeightIns = 0.0, HeightTotalInIns = 0.0;
    
            do {
                string WaistToHeightCalculatorMenu = ("\nWhich Measurement You Want to use to enter the weight and height?"
                                                   + "\n1)Enter 1 for Metric"
                                                   + "\n2)Enter 2 for British Imperial:");
                Console.Write(WaistToHeightCalculatorMenu);
                WaistToHeightCalculatorOption = int.Parse(Console.ReadLine());
    
                if (WaistToHeightCalculatorOption == 1) {
    
                    Console.Write("\nPlease Enter your Height in cm:");
                    HeightCm = double.Parse(Console.ReadLine());
                    Console.Write("\nPlease Enter your Waist in centimetres (cm):");
                    WaistCm = double.Parse(Console.ReadLine());
    
                    WaistToHeightRatio = WaistCm / HeightCm;
                    Console.Write("\n1)Enter 1 If you are Male"
                                + "\n2)Enter 2 If you are Female:");
                    GenderOption = int.Parse(Console.ReadLine());
    
                    if (GenderOption == 1 && WaistToHeightRatio >= 0.536) {
                        Console.Write("\nYour Waist to Height Ration is {0}, Your Risk of Obesity Related Cardiovascular Diseases is at High Risk", WaistToHeightRatio);
                    } else if (GenderOption == 1 && WaistToHeightRatio < 0.536) {
                        Console.Write("\nYour Waist to Height Ration is {0}, Your Risk of Obesity Related Cardiovascular Diseases is at low Risk", WaistToHeightRatio);
                    } else if (GenderOption == 2 && WaistToHeightRatio >= 0.492) {
                        Console.Write("\nYour Waist to Height Ration is {0}, Your Risk of Obesity Related Cardiovascular Diseases is at High Risk", WaistToHeightRatio);
                    } else if (GenderOption == 2 && WaistToHeightRatio < 0.492) {
                        Console.Write("\nYour Waist to Height Ration is {0}, Your Risk of Obesity Related Cardiovascular Diseases is at low Risk", WaistToHeightRatio);
                    } //End if
    
                    Console.Write("\n\nWhould you like to make an anothe conversion? /n/n Enter Y to make an another conversion/Ener any other key to exit:");
                    AnotherConversion = Console.ReadLine();
    
    
                } else if (WaistToHeightCalculatorOption == 2) {
                    Console.Write("\nPlase Enter your Waist in inches:");
                    WaistIns = double.Parse(Console.ReadLine());
                    Console.Write("\nPlease Enter the Height in feet:");
                    HeightFeet = double.Parse(Console.ReadLine());
                    Console.Write("\nPlease Enter the Heigt in inches:");
                    HeightIns = double.Parse(Console.ReadLine());
                    WaistToHeightRatio = WaistIns / HeightTotalInIns;
                    HeightTotalInIns = (HeightFeet * 12) + HeightIns;
                    Console.Write("\nMale Enter 1 , Female Enter 2:");
                    GenderOption = int.Parse(Console.ReadLine());
    
                    if (GenderOption == 1 && WaistToHeightRatio >= 0.536) {
                        Console.Write("Your Waist to Height Ration is {0}, Your Risk of Obesity Related Cardiovascular Diseases is at High Risk", WaistToHeightRatio);
                    } else if (GenderOption == 1 && WaistToHeightRatio < 0.536) {
                        Console.Write("Your Waist to Height Ration is {0}, Your Risk of Obesity Related Cardiovascular Diseases is at low Risk", WaistToHeightRatio);
                    } else if (GenderOption == 2 && WaistToHeightRatio >= 0.492) {
                        Console.Write("Your Waist to Height Ration is {0}, Your Risk of Obesity Related Cardiovascular Diseases is at High Risk", WaistToHeightRatio);
                    } else if (GenderOption == 2 && WaistToHeightRatio < 0.492) {
                        Console.Write("Your Waist to Height Ration is {0}, Your Risk of Obesity Related Cardiovascular Diseases is at low Risk", WaistToHeightRatio);
                    } //End if
                    Console.Write("\n\nWhould you like to make an anothe conversion? /n/n Enter Y to make an another conversion/Ener any other key to exit:");
                    AnotherConversion = Console.ReadLine();
                }
            } while (AnotherConversion == "Y" || AnotherConversion == "y");
        }
    
        static void FuelConsumptionCalculator(string[] args) {
    
            int FuelConsumptionMenuOption;
            double Litre = 0.0, Kilometre = 0.0, Gallon = 0.0, Mile = 0.0;
            double ComsumptionPer100Km = 0.0, ComsumptionPer100KmInMPG = 0.0, ComsumptionPer100KmInKm = 0.0, ComsumptionPerGal = 0.0;
            ComsumptionPer100KmInMPG = ((Kilometre / 1.609) / (Litre / 4.546)) * 100;
            string ToSeeMPerGalOption, ToSeelPerKmOption;
            string AnotherConversion;
            do {
                string FuelConsumptionMenu = ("\nWhich Measurement You Want to use to enter the weight and height?"
                                                       + "\n1)Enter 1 for Metric"
                                                       + "\n2)Enter 2 for British Imperial:");
                Console.Write(FuelConsumptionMenu);
                FuelConsumptionMenuOption = int.Parse(Console.ReadLine());
    
                if (FuelConsumptionMenuOption == 1) {
                    Console.Write("\nPlease Enter Litres(l) of Fuel used over distance travelled:");
                    Litre = double.Parse(Console.ReadLine());
                    Console.Write("\nPlease Enter Kilometres driven:");
                    Kilometre = double.Parse(Console.ReadLine());
                    ComsumptionPer100Km = Litre / (Kilometre / 100);
                    Console.WriteLine("\nYour Consumption in Litres per 100 Kilometres is {0}", ComsumptionPer100Km);
                    Console.Write("\nWould you like to see the equivalent result in miles per gallon (mpg)?"
                                     + "\n(Press Y For yes or Press other key to cancel this option):");
                    ToSeeMPerGalOption = Console.ReadLine();
                    ComsumptionPer100KmInMPG = ((Kilometre / 1.609) / (Litre / 4.546) * 100);
    
                    if (ToSeeMPerGalOption == "Y" || ToSeeMPerGalOption == "y") {
                        Console.Write("\nThe equivalent result in miles per gallon (mpg) is {0}", ComsumptionPer100KmInMPG);
                    }
                    Console.Write("\n\nWhould you like to make an anothe conversion? /n/n Enter Y to make an another conversion/Ener any other key to exit:");
                    AnotherConversion = Console.ReadLine();
    
                } else if (FuelConsumptionMenuOption == 2) {
                    Console.Write("\nPlease Enter Gallons (gal) of Fuel used over distance travelled:");
                    Gallon = double.Parse(Console.ReadLine());
                    Console.Write("\nPlease Enter Miles (m)driven:");
                    Mile = double.Parse(Console.ReadLine());
                    ComsumptionPerGal = Gallon / Mile;
                    Console.WriteLine("\nYour Consumption in Miles per Gallon is {0}", ComsumptionPerGal);
                    Console.Write("\nWould you like to see the equivalent result in litres per 100 kilometres(km)?"
                                     + "\n(Press Y For yes or Press other key to cancel this option):");
                    ToSeelPerKmOption = Console.ReadLine();
                    ComsumptionPer100KmInKm = ((Mile * 1.609) / (Gallon * 4.546)) * 100;
    
                    if (ToSeelPerKmOption == "Y" || ToSeelPerKmOption == "y") {
                        Console.Write("\nThe equivalent result in litres per 100 kilometres(km) is {0}", ComsumptionPer100KmInKm);
                    }
                }//End if 
                Console.Write("\n\nWhould you like to make an anothe conversion? /n/n Enter Y to make an another conversion/Ener any other key to exit:");
                AnotherConversion = Console.ReadLine();
    
            } while (AnotherConversion == "Y" || AnotherConversion == "y");
    
        }
    
        static int ReadOption() {
            int option =0 ;
            bool ValidMainMenuOption = false;
    
        do{
           option = int.Parse(Console.ReadLine());
    
           if ((1 <=option) & (option <= 5)) {
               ValidMainMenuOption = true ;
           } else {
               ValidMainMenuOption = false;
           } // end if
    
           if (!ValidMainMenuOption){
               Console.WriteLine("\n\t\a Option must be 1,2,3,4,5");
               DisplayMenu();
           } //end if 
         } while (!ValidMainMenuOption);
    
        return option;
        } //end ReadOption
    
        /* Displays Main Menu
         * Precondition:true
         * postcondition: mainMenu displayed
         */
        static void DisplayMenu() {
            string mainMenu = "\n1)Length Calculator"
                            + "\n2)Body Mass Index Calculator"
                            + "\n3)Waist to Height Calculator"
                            + "\n4)Fuel Consumption Calculator"
                            + "\n5)Exit the Calculator"
                            + "\n\n Enter your option(1,2,3,4 or 5 to exit):";
            Console.Write(mainMenu);
        } //end mainMenu
    
        static void Main(string[] args) {
            const int Exit = 5;
            int menuOption = ReadOption();
    
            do {
                DisplayMenu();
    
                if (menuOption == 1) {
                    LengthCalculator();
                } else if (menuOption == 2) {
                    BMICalculator();
                } else if (menuOption == 3) {
                    WaistToHeightCalculator();
                } else if (menuOption == 4) {
                    FuelConsumptionCalculator();
                } else if (menuOption == 5) {
                    Console.Write("Thank you for using this Calculator, See you next time");
                    Console.WriteLine("Press any Key to Exit");
                    Console.ReadKey();
                } 
    
            } while (menuOption != Exit);
    
            // need to output terminating message 
            Console.ReadKey();
    
        } //end Main
    

2 个答案:

答案 0 :(得分:2)

您的功能定义为

static void WaistToHeightCalculator(string[] args)

你这样称呼它

WaistToHeightCalculator();

你需要像这样称呼它

WaistToHeightCalculator(args);

您必须传递定义函数的所有参数。我假设你把这些中的每一个写成主要的,然后试图将它们全部拉到一起。错误No overload for method 'BMICalculator' takes 0 arguments只是意味着编译器找不到不带参数的函数版本。它只知道带有一个参数的版本,它是一个字符串数组。

修改

正如@jdpenix所说,您也不会在任何函数中使用args,因此您可以将函数定义更改为static void WaistToHeightCalculator()并继续按照您的方式调用它们。

答案 1 :(得分:0)

My Current Code:
static void LengthCalculator(string[] args) {
// snip for brevity
}

static void BMICalculator(string[] args) {
// snip for brevity
}

static void WaistToHeightCalculator(string[] args) {
// snip for brevity
}

static void FuelConsumptionCalculator(string[] args) {
// snip for brevity
}

static void Main(string[] args) {
const int Exit = 5;
int menuOption = ReadOption();

do {
    DisplayMenu();

    if (menuOption == 1) {///////////////////////////////////////////////////
        LengthCalculator(args); // <------HERE
    } else if (menuOption == 2) {
        BMICalculator(args); // <------HERE
    } else if (menuOption == 3) {
        WaistToHeightCalculator(args); // <------HERE
    } else if (menuOption == 4) {
        FuelConsumptionCalculator(args); // <------HERE
///////////////////////////////////////////////////////////////////////////////////

    } else if (menuOption == 5) {
        Console.Write("Thank you for using this Calculator, See you next time");
        Console.WriteLine("Press any Key to Exit");
        Console.ReadKey();
    } 

} while (menuOption != Exit);

// need to output terminating message 
Console.ReadKey();

} //end Main