C#方法没有在switch语句中调用?

时间:2017-06-26 12:05:09

标签: c# methods

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Menu_Attempts
{
    class Program
    {
        static void Main(string[] args)

        {
            bool forever = true;
            do
            {
                Console.WriteLine("1. Stone to Pounds");
                Console.WriteLine("2. Quit");

                int reply = Convert.ToInt32(Console.ReadLine());
                switch (reply)
                {
                    case 1:
                        Console.WriteLine("Enter an amount in Stone");
                        double UserInput = double.Parse(Console.ReadLine());
                        StoneToPounds(UserInput);

                        break;
                    case 2:
                        Console.WriteLine("You've decided to quit.");
                        forever = false;

                        break;

                }
            } while (forever);

        }

        public static double StoneToPounds(double number)
        {
            double answer = number * 14;
            return answer;
        }

    }
}

所以我试图制作一个基于控制台的菜单,并在需要时调用方法来清理它。我选择选项1.将石头转换为磅,它给了我输入数字的选项。但是当我这样做时,只需循环回到菜单的乞讨?

4 个答案:

答案 0 :(得分:2)

是的,正在调用您的方法(并且您可以通过添加断点来证明),但您实际上并未对StoneToPounds方法结果执行任何操作。也许你可以这样做:

case 1:
    Console.WriteLine("Enter an amount in Stone");
    double UserInput = double.Parse(Console.ReadLine());
    Console.WriteLine("The result is {0}", StoneToPounds(UserInput));
    break;

您很快就会看到,只要用户输入文字或任何不同于数字的内容,您的代码就会中断;我建议您查看TryParse方法

答案 1 :(得分:0)

方法很好。你只是不打印答案。像这样更改你的代码来打印答案:

case 1:
   Console.WriteLine("Enter an amount in Stone");
   double UserInput = double.Parse(Console.ReadLine());
   double result = StoneToPounds(UserInput);
   Console.WriteLine(result.ToString());

   break;

答案 2 :(得分:0)

您只需在致电break之前添加此行代码:

Console.WriteLine("The result is {0}", StoneToPounds(UserInput));
Console.WriteLine("Press any key to continue");
Console.ReadKey();

答案 3 :(得分:-1)

正如其他人所说的......你调用你的方法并返回双值......但是你没有保存它任何变量,如果你不想对变量本身进行操作,你可以将它传递给这样一个ref参数,ur方法中的变量发生任何变化都会影响全局变量

public static void StoneToPounds(ref double number)
    {
        number *= 14
    }

btw运算符* =可以消除你对单独函数的需求,如果你是初学者那么你现在应该只需要更少的代码就可以保持干净整洁:D