входы в методы на визуальном C # 2005 - PullRequest
2 голосов
/ 21 апреля 2011

Я столкнулся с проблемой при создании консольного приложения в Visual Studio c # 2005

Я создал следующую программу, в которой в программе вызывается метод (для суммирования 2 предопределенных значений)

вот код этого

class program
{
    static void Main()
    {
        program a;
        a = new program();
        Console.WriteLine(a.am1(1,2));
        Console.ReadLine();
    }
    int sum;
    public int am1(int num1, int num2)
    {
        sum = num1 + num2;
        return sum;
    }
}

Теперь вот основная проблема, с которой я сталкиваюсь, в этой программе заданы два целых числа (num1 и num2), я хотел, чтобы эти 2 числа были взяты у пользователя, означает, что пользователь вводит два числа, а затем та же самая программа как выше. Как это сделать?

P.S помните, что все должно быть сделано в методах

Ответы [ 2 ]

2 голосов
/ 21 апреля 2011

Я надеюсь, что я получил ваши требования ... если нет, пожалуйста, уточните!

public sealed class Program
{
    private readonly int _number1;
    private readonly int _number2;

    public Program(int number1, int number2)
    {
        this._number1 = number1;
        this._number2 = number2;
    }

    public int Sum()
    {
        return this._number1 + this._number2;
    }

    public static void Main(string[] args)
    {
        // this one here is really brutal, but you can adapt it
        int number1 = int.Parse(args[0]);
        int number2 = int.Parse(args[1]);
        Program program = new Program(number1, number2);
        int sum = program.Sum();
        Console.WriteLine(sum);
        Console.ReadLine();
    }
}

sry, это не мой основной стиль кодирования ... pfuh ... действительно ужасно!

редактирование:

  1. не доверяйте слепо int.Parse(). параметры поступают от пользователя, лучше дважды проверьте их!
  2. вам лучше их тройной проверкой, так как вы делаете сумму ... к счастью, c # компилируется с unchecked - этот код может завершиться с OverflowException, если скомпилирован в vb - помните диапазоны int
  3. почему вы хотите сделать простое дополнение в дополнительном классе?
  4. Вы должны разработать свой стиль (относительно вашего комментария): отделить пользовательский код от кода бизнес-уровня!
  5. вам не нужно создавать переменную экземпляра для каждой задачи - вы можете сделать это и с помощью переменных области видимости ...!
  6. ...
0 голосов
/ 21 апреля 2011

Использовать аргументы командной строки консольного приложения.Если вам это подходит.Ниже приведен пример из MSDN.

 public class Functions
    {
        public static long Factorial(int n)
        {
            // Test for invalid input
            if ((n < 0) || (n > 20))
            {
                return -1;
            }

            // Calculate the factorial iteratively rather than recursively:
            long tempResult = 1;
            for (int i = 1; i <= n; i++)
            {
                tempResult *= i;
            }
            return tempResult;
        }
    }

    class MainClass
    {
        static int Main(string[] args)
        {
            // Test if input arguments were supplied:
            if (args.Length == 0)
            {
                System.Console.WriteLine("Please enter a numeric argument.");
                System.Console.WriteLine("Usage: Factorial <num>");
                return 1;
            }

            // Try to convert the input arguments to numbers. This will throw
            // an exception if the argument is not a number.
            // num = int.Parse(args[0]);
            int num;
            bool test = int.TryParse(args[0], out num);
            if (test == false)
            {
                System.Console.WriteLine("Please enter a numeric argument.");
                System.Console.WriteLine("Usage: Factorial <num>");
                return 1;
            }

            // Calculate factorial.
            long result = Functions.Factorial(num);

            // Print result.
            if (result == -1)
                System.Console.WriteLine("Input must be >= 0 and <= 20.");
            else
                System.Console.WriteLine("The Factorial of {0} is {1}.", num, result);

            return 0;
        }
    }
    // If 3 is entered on command line, the
    // output reads: The factorial of 3 is 6.
...